2016-04-22 46 views
0

我有三種算法,每天早上7點運行一次。每種算法都將其結果寫入表中。也就是說,每種算法都會寫入其結果Result,結果Date及其ID認可。所以,每天,三條線都添加到表,如下所示:SQL - 給定每天有三個條目的表,如何每天寫一個新的表和三個列

ID Result Date 
A  35  21/04/2016 
B  27  21/04/2016 
C  31  21/04/2016 

爲了提高閱讀,我現在想生產,其中在同一天的條目存儲在同一個記錄第二個表,像如下:

Date   A  B  C 
21/04/2016 35 27 31 

你能幫忙嗎?

(SQL Server 2012中)

+1

您可以隨時得到這些結果與樞軸查詢。您目前的計劃未考慮到ID = D可能在未來出現的事實。 –

+1

樞軸,樞軸,樞軸。 – qxg

+0

感謝您的提示。我將檢查PIVOT查詢。 – Eduardo

回答

1

下面是答案的完整性PIVOT解決方案的一個簡單的演示。我發現PIVOT解決方案更加優雅,條件聚合,但它的代價是適應性較差。

DECLARE @T TABLE (ID CHAR(1), Result INT, Date DATE); 
INSERT @T (ID, Result, Date) 
VALUES ('A', 35, '2016-04-21'), ('B', 27, '2016-04-21'), ('C', 35, '2016-04-21'); 

SELECT pvt.Date, pvt.A, pvt.B, pvt.C 
FROM @T AS T 
     PIVOT (MAX(Result) FOR ID IN (A, B, C)) AS pvt; 

結果

Date  A B C 
----------------------- 
2016-04-21 35 27 35 
1

這是一個支點查詢。您可以使用明確的pivot。我認爲有條件的聚集是很容易的:

select date, 
     max(case when id = 'A' then result end) as a, 
     max(case when id = 'B' then result end) as b, 
     max(case when id = 'C' then result end) as c 
from t 
group by date 
order by date;