私はデータテーブルをピボットすると、望ましい結果が得られると思います。
IF OBJECT_ID('tempdb..#TableA') IS NOT NULL
DROP TABLE #TableA
CREATE TABLE #TableA
(
RowNumber INT,
ID INT,
Value INT
)
INSERT #TableA VALUES (1, 1, 4)
INSERT #TableA VALUES (1, 1, 5)
INSERT #TableA VALUES (1, 1, 6)
INSERT #TableA VALUES (1, 2, 7)
INSERT #TableA VALUES (1, 2, 8)
INSERT #TableA VALUES (1, 2, 9)
INSERT #TableA VALUES (1, 3, 10)
INSERT #TableA VALUES (1, 3, 11)
INSERT #TableA VALUES (1, 3, 12)
-- https://msdn.microsoft.com/en-us/library/ms177410.aspx
SELECT RowNumber, [1] AS Sum1, [2] AS Sum2, [3] AS Sum3
FROM
(
SELECT RowNumber, ID, Value
FROM #TableA
) a
PIVOT
(
SUM(Value)
FOR ID IN ([1], [2], [3])
) AS p
このテクニックは、あなたが求めているIDが一定であれば動作しますが、そうでない場合は、私が変更IDが必要とされている場合、一部のdyanmic-SQLは同様に働くだろうと想像します。
https://msdn.microsoft.com/en-us/library/ms177410.aspx
あなたはどのように変化するかを、多くの異なるIDをお持ちになる値、または意志事前に知っていますか? – Jerrad
集約後にピボットを使用する必要があります。 https://technet.microsoft.com/en-us/library/ms177410(v=sql.105).aspx –
@Jerrad IDは静的です。私は3つの異なるIDしか持っていません。 –