SQLテーブルを再フォーマットする際に問題が発生しました。 元の表は、以下の形式列アイテムを列アイテムのインデックスに変更するSQL
index1 index2 item1 item2
01 001 10 100
02 001 10 100
...
01 002 20 200
02 002 20 200
...
のようについてことができ、Iは指標1及び指標2は、(主キー以外の任意のインデックスを意味することができる
index2 01item1 01item2 02item1 02item2 ...
001 10 100 10 100 ...
002 20 200 20 200 ...
...
ようなテーブルにそれをフォーマットし直すします例えば、私はそれらを{赤、黄、青}と呼ぶことができ、{四角、丸、棒}の形をとることができ、項目はある種のものを示します(この例では赤丸を言うことができます) (例えば、item1は重みを意味し、dataは80、item2は高さを意味し、データは100など)
私は以下の質問(Efficiently convert rows to columns in sql server)を見てきましたが、私の解決策はそこに存在するはずですが、まだピボットを使用する方法を理解することができないので、それでも解決できないと考えています。 。
インデックス1に存在するインデックスの総数がすべての種類のインデックス2で同じであることを前提とすることは安全です(つまり、001に10のindex1がある場合、002に10のインデックス1よりも同様)
(うまくいけば、それは人々がさらに私の質問については混乱することはありません) ので、最後に、私は、クエリを実行するには次のようになります。
string builder sb = new string builder;
foreach(int indexNo2 in index2){
foreach(int indexNo1 in index1{
sb.append("select item1 as" + indexNo1+"item01, item2 as" +indexNo2+"item02
where index1 =" + indexNo1 + " and index2 =" + indexNo2 + "inner join");
}
sb.append("unit"+endl);
}
しかし、これは私がしたいだけの方法です結果を似たように見せても、私が実際にこのような長いクエリを最終的に作成したいというわけではありません。 PS。私は#クエリを作成するためにACスーツコードを書こうとしましたが、SQLでテーブルのフォーマットを変更するソリューションを探したいのです
を述べたように、私はすでに解決した前に私はあなたが(あなたがこれまでに試みられてきたもの)いくつかのサンプルコードを追加することができ、同じ要件を得ました。ピボットはおそらくそれを行う方法です。しかし、多分非SQL的な方法が良いでしょう(例えば、プログラミング言語Rは溶融コマンドを持っています)。あなたが望むものを理解するのは難しいです... index1とitem1のような用語は、用語の不一致を示唆しています(SQLインデックス?)。インデックス{1}は主キー(またはキー)を意味し、項目{n}は非キーデータを意味しますか?ありがとう。 – ripvlan
アンダースコアは空白を意味するので、そこにスペースを追加するとフォームに違いが表示されません – n4feng
スーツコードを追加します – n4feng