2015-07-03 134 views
0

我們正在研究將我們的測試結果存儲在數據庫中的任務。這是我們的表格:數據透視查詢集合函數

|Path  | Date  | Result | 
|---------------------------------| 
|Test1 | 01/01/2015 | True  | 
|Test2 | 01/01/2015 | False | 
|Test1 | 02/02/2015 | True  | 
|Test2 | 02/02/2015 | False | 

此表格中的路徑是[varchar],日期是[smalldatetime]和Result [位]。我們想創建一個支點存儲過程將在下面的格式顯示數據:

|Path  | [01/01/2015] | [02/02/2015] | [03/03/2015]| 
|-----------------------------------------------------| 
|Test 1 | True   | True   | True  | 
|Test 2 | False  | False  | False  | 

到目前爲止,我們設法讓所有日期:

SET @sql = 'SELECT * FROM (SELECT [Path],[Date],[Result] FROM [dbo].[Results]) AS 

[SubTable] 
pivot 
(
    MAX([Result]) 
    FOR [Date] IN ([' + @docDates + ']) 
) AS [Pivot];'; 

EXEC @sql; 

這個選擇,我們所需要的所有考試日期,但測試名稱重複。任何幫助將不勝感激。

+0

你如何運行最大的位列?有沒有我沒有看到的轉換?這不是有效的SQL。此外,每個日期應該有括號,而不僅僅是日期字符串周圍的一對括號。 –

+0

列名在表TestName,TestDate,IsPassed和SQL路徑,日期和結果? –

回答

0

對不起,對於錯誤的列名稱。然而,這裏是什麼在爲我工作:

SELECT * FROM (SELECT [Path], [Date], CAST([Result] as tinyint) as [Result] FROM [dbo].[Results]) AS [SubTable] PIVOT (Min([Result]) FOR [Date] IN ([01/01/15],[02/02/15],[03/03/15])) AS [Pivot];