私は SQL に非常に慣れていないので、次のタスクを達成する方法がわかりません: テーブルに一連のデータがあり、そのデータを 2 つの値のいずれかに変換し、それぞれの合計を合計する必要があります。サマリー列のペアの行。下記参照:
tbl1:
row P1 P2 P3
--- --- --- ---
1 a b c
2 a a a
3 b c b
4 a b b
5 NULL NULL NULL
変換表は次のとおりです。
PNum PType
---- -----
a car
b truck
c car
望ましい最終結果:
row P1 P2 P3 numCars numTrucks
--- --- --- --- ------- ---------
1 a b c 2 1
2 a a a 3 0
3 b c b 1 2
4 a b b 1 2
5 NULL NULL NULL NULL NULL
テスト テーブルを取得するコード:
DECLARE @tbl1 TABLE(P1 VARCHAR,P2 VARCHAR,P3 VARCHAR)
INSERT INTO @tbl1
SELECT 'a','b','c' UNION ALL
SELECT 'a','a','a' UNION ALL
SELECT 'b','c','b' UNION ALL
SELECT 'a','b','b'
DECLARE @tbl2 TABLE(PNum VARCHAR,PType NVARCHAR(100))
INSERT INTO @tbl2
SELECT 'a','car' UNION ALL
SELECT 'b','truck' UNION ALL
SELECT 'c','car'
私は PIVOT を調べてきましたが、それを実装する方法を理解するのに苦労しています (特に変換ピースの場合)。最初に値を変換するためだけに一連の列を挿入しようと考えました (例: "P1_converted")、次にそれらを要約しようとしましたが、実際のテーブルにはこれらの型の列が 10 個あり、さらに 10 個の列を追加したくありませんでした。もっと簡単な方法があれば、テーブルに。何かご意見は?ありがとう!
SQL Server 2008 を使用しています。