Web design and hosting, database, cloud and social media solutions that deliver business results
  • ビジネスソリューション
    • データベースサービス
      • サーバーのアップグレードと DBA サービス
      • データウェアハウス サービス
      • データ統合
      • パワーBI
    • ウェブサイトデザイン
      • Web サイトのセキュリティ
      • Web サイトの最適化
      • ロゴデザイン
      • 支払いゲートウェイ
      • テクニカルツール
    • ビジネスサービス
      • Google クラウド サービス
      • アマゾン ウェブ サービス
      • マイクロソフト アズール
    • ソーシャルメディア
    • マイクロソフトオフィス
  • 学校
    • テスト環境
    • 学習データベース
      • 基礎
      • SQL Serverデータ
      • SQLServerのメンテナンス
      • SQL Serverの日付の使用
      • SQLServerピボットの使用-ピボット解除
      • SQLServer関数の使用
      • オープンクエリを取得
      • ツール
    • ウェブデザインを学ぶ
      • Ousia コンテンツ管理システムの構築
      • ASP-NET の使用
      • CSS の使用
      • JavaScript の使用
    • クラウドと IT サービスの学習
      • タスク スケジューラ エラー 2147943645
      • OpenSSL での SSL の要求と PFX ファイルの生成の簡単な手順
    • ソーシャル メディアの使用
      • Facebookアカウントを個人用からビジネス用に変更する
      • Google レビューを依頼する
      • ソーシャル メディアの取り組みをどこに集中させるかを選択する
      • ソーシャル メディアの画像サイズ
      • メタ データを使用してソーシャル メディア画像を設定する
  • 私たちに関しては
    • ブログ
      • Google コア アップデート 2020 年 1 月
      • インターネット上のウェブサイトに関する最も厄介なこと
      • ウェブサイトの広告リーフレットのコンテンツを選択する方法
      • エントリーレベルのゲーム機の構築
      • オンライン詐欺の防止
      • ギグエコノミーのスキマー
      • ホットチリインターネット閉鎖
      • 無料のベクター グラフィックスのトップ 5 Web サイト
    • キャリア
      • 翻訳者 英日
      • 英語-トルコ語翻訳者
    • チーム
      • アイセ・ハー
      • アリ アル アミン
      • ギャビン・クレイトン
      • サイガングー
      • スーリヤ・ムッカマラ
      • スニール・クマール
      • チェスターコッパーポット
    • ポートフォリオ
عربى (AR)čeština (CS)Deutsch (DE)English (EN-GB)English (EN-US)Español (ES)فارسی (FA)Français (FR)हिंदी (HI)italiano (IT)日本語 (JA)polski (PL)Português (PT)русский (RU)Türk (TR)中国的 (ZH)

UNPIVOTを使用して列を行に変換するSQLServer

実世界のタイプのシナリオでUNPIVOT関数を使用するSQLServer。

CASEを取り除くためのケース

ピボット/ピボット解除の使用

私たちが取り組んできたプロジェクトの多くは、1か月から12か月が年ごとに保存されたテーブルに保存されたデータの操作に関係していました。これは珍しい解決策ではありませんが、SQLステートメントが数十のCASEステートメントで肥大化する可能性があります。

これらのCASEステートメントは、保守を困難にし、人的エラーの原因となる可能性もあります。

以下に、実際の例に従って設定された単純なデータセットを作成しました。SQLServerには、列を行に変換する関数があります。

UnPivIDUnPivYearM1M2M3M4M5M6M7M8M9M10M11M12
12010123456789101112
12011123456789101112
12012123456789101112
22010123456789101112

CASEを取り除くためのケース

SQL Server 2012で実行している場合は、この関数を作成する必要があります。これは、2012年から組み込まれたDATEFROMPARTS関数と同等です。
詳細:2012より前のバージョンのSQLServer関数DATEFROMPARTS

CASEを取り除くためのケース

次に、一時テーブルを作成し、上記のサンプルデータを入力します。

SQL

DECLARE @UnPiv TABLE (UnPivID INT, UnPivYear SMALLINT, M1 INT, M2 INT, M3 INT, M4 INT, M5 INT, M6 INT, M7 INT, M8 INT, M9 INT, M10 INT, M11 INT, M12 INT)INSERT INTO @UnPiv(UnPivID,UnPivYear,M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12)SELECT 1,2010,1,2,3,4,5,6,7,8,9,10,11,12INSERT INTO @UnPiv(UnPivID,UnPivYear,M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12)SELECT 1,2011,1,2,3,4,5,6,7,8,9,10,11,12INSERT INTO @UnPiv(UnPivID,UnPivYear,M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12)SELECT 1,2012,1,2,3,4,5,6,7,8,9,10,11,12INSERT INTO @UnPiv(UnPivID,UnPivYear,M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12)SELECT 2,2010,1,2,3,4,5,6,7,8,9,10,11,12
SELECT UnPivID,UnPivYear,REPLACE(col,'M','') UnPivMonth,dbo.c1bs_DateFromParts(UnPivYear,REPLACE(col,'M',''),1) UnPivDate,DateFromParts(UnPivYear,REPLACE(col,'M',''),1) UnPivDateFrom2012,valFROM @UnPivUNPIVOT (Val FOR col IN (M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12)) unpiv

CASEを取り除くためのケース

これにより、以下のようなデータセットが返されます。

Results

UnPivIDUnPivYearUnPivMonthUnPivDateUnPivDate2012val
12010101/01/201001/01/20101
12010201/02/201001/02/20102
12010301/03/201001/03/20103
12010401/04/201001/04/20104
12010501/05/201001/05/20105
12010601/06/201001/06/20106
12010701/07/201001/07/20107
12010801/08/201001/08/20108
12010901/09/201001/09/20109
120101001/10/201001/10/201010
120101101/11/201001/11/201011
120101201/12/201001/12/201012
12011101/01/201101/01/20111
12011201/02/201101/02/20112
12011301/03/201101/03/20113
12011401/04/201101/04/20114
12011501/05/201101/05/20115
12011601/06/201101/06/20116
12011701/07/201101/07/20117
12011801/08/201101/08/20118
12011901/09/201101/09/20119
120111001/10/201101/10/201110
120111101/11/201101/11/201111
120111201/12/201101/12/201112
12012101/01/201201/01/20121
12012201/02/201201/02/20122
12012301/03/201201/03/20123
12012401/04/201201/04/20124
12012501/05/201201/05/20125
12012601/06/201201/06/20126
12012701/07/201201/07/20127
12012801/08/201201/08/20128
12012901/09/201201/09/20129
120121001/10/201201/10/201210
120121101/11/201201/11/201211
120121201/12/201201/12/201212
22010101/01/201001/01/20101
22010201/02/201001/02/20102
22010301/03/201001/03/20103
22010401/04/201001/04/20104
22010501/05/201001/05/20105
22010601/06/201001/06/20106
22010701/07/201001/07/20107
22010801/08/201001/08/20108
22010901/09/201001/09/20109
220101001/10/201001/10/201010
220101101/11/201001/11/201011
220101201/12/201001/12/201012

Was this helpful?

Please note, this commenting system is still in final testing.

Author

Copyright Claytabase Ltd 2020

Registered in England and Wales 08985867

RSSLoginLink クッキーポリシーサイトマップ

Social Media

facebook.com/Claytabaseinstagram.com/claytabase/twitter.com/Claytabaselinkedin.com/company/claytabase-ltd

Get in Touch

+442392064871info@claytabase.comClaytabase Ltd, Unit 3d, Rink Road Industrial Estate, PO33 2LT, United Kingdom
The settings on this site are set to allow all cookies. These can be changed on our Cookie Policy & Settings page.
By continuing to use this site you agree to the use of cookies.
Ousia Logo
Logout
Ousia CMS Loader