2013-10-31 17 views
0

我對SQL Server查詢有點麻煩。您可以在我的結果中看到,在第1級的列中存在「第1級活動」記錄,但實際上有3個記錄「第1級活動,第1級活動第2和第1級活動第3」。用我的命令MIN(activityName),它只顯示1。我得到了有關SQL Server PIVOT的問題

我想知道的是我們是否有任何其他方式來表達這樣的3條記錄的數據?

SELECT 
    strandName as [Strand Name], 
    scopeName as [Scope Name], 
    FoundationLevel as [Foundation Level], 
    Level1 as [Level 1] 
FROM 
    (select 
     st.strandName, s.scopeName, l.levelNo, activityName 
    from 
      strands as st 
    inner join 
      scopes as s on st.id = s.strandID 
    left join 
      activities as a on s.id = a.scopeID 
    left join 
      levels as l on a.levelID = l.id where unitID = 2) up 
PIVOT 
    (min(activityName) FOR levelNo IN (FoundationLevel, Level1)) AS pvt 
ORDER BY 
    scopeName 

非常感謝。

+0

您可以使用支點創建記錄的字段 –

回答

0
WITH T 
    AS (select strandName as [Strand Name] , scopeName as [Scope Name] , FoundationLevel as [Foundation Level] , Level1 as [Level 1] 

FROM (select st.strandName, s.scopeName, l.levelNo, activityName from strands as st 

inner join scopes as s on st.id = s.strandID 

left join activities as a on s.id = a.scopeID 

left join levels as l on a.levelID = l.id where unitID = 2) 

SELECT * 
FROM T PIVOT (min(activityName) 
FOR levelNo IN (Level 1 activity, Level 1 activity second, Level 1 activity third)) AS pvt 
ORDER BY OrderID