6

この表を考慮してください:

ID         Page          Line           C01          C02          C03        
---------------------------------------------------------------------
1          122            11             1            0            1
1          123            11             1            1            1
1          124            12             0            0            0
1          125            16             1            0            1
1          127            11             0            1            0

このテーブルを次のテーブルに変換したいと思います。

ID         Page          Line           City         Value
-----------------------------------------------------------
1          122            11            C01            1           
1          122            11            C02            0  
1          122            11            C03            1  
1          123            11            C01            1  
1          123            11            C02            1  
1          123            11            C03            1  
...

どうすればこれを適切な方法で行うことができますか?

4

5 に答える 5

9

UNPIVOTを使用してください。次のようなものを試してください:

SELECT ID, Page, Line, City, Value
FROM SourceTable
UNPIVOT
   (Value FOR City IN 
      (C01, C02, C03)
)AS unpvt;

ここで、「SourceTable」はソーステーブル名です。(注:現時点ではこれをテストできないため、正確に正しくない可能性があります。)

詳細はこちら: http: //msdn.microsoft.com/en-us/library/ms177410 (v = sql.105).aspx

于 2012-07-04T05:50:25.853 に答える
1

Pivot&UnPivotは問題を解決します:)

リンクをたどる:

于 2012-07-04T05:48:39.387 に答える
1

以下のクエリで要件を満たせるはずです。

SELECT ID, PAGE, LINE, "C01", C01 FROM TABLE
UNION 
SELECT ID, PAGE, LINE, "C02", C02 FROM TABLE
UNION
SELECT ID, PAGE, LINE, "C03", C03 FROM TABLE
于 2012-07-04T05:54:22.187 に答える
1

これは、Linqtosqlでこのようなことを行うことで実現できます

Unpivot(ピボットではない)機能はLinq to SQLで使用できますか?どのように?

于 2012-07-04T06:05:36.207 に答える
0

1 + N番目の列ごとに1回、自己結合を実行します。そして、デカルトテーブルを作成します。

自己結合は、同じテーブルをそれ自体に結合しています。ID、ページ、行で一致させます。

于 2012-07-04T05:46:08.533 に答える