我試圖選擇一羣患者與他們的單位和師,我想按單位名稱將結果分組,但是這個代碼並沒有執行,並且給出了這個問題的主題。列在選擇列表中無效,因爲它不包含在聚合函數或GROUP BY子句中
SELECT TOP (100) PERCENT
Pat.PatName AS Name,
srvDiv.sgMType AS Perkhidmatan,
Pat.PatMRank AS Pangkat,
Pat.PatMilitaryID AS [No# Tentera],
unt.untName AS Unit,
fct.pesStatusCode as StatusCode,
fct.pesSignedDate AS SignedDate
FROM dbo.FactPES AS fct INNER JOIN
dbo.DimPatient AS Pat ON fct.pesPatID = Pat.PatID LEFT OUTER JOIN
dbo.DimUnit AS unt ON fct.pesUnitID = unt.untID LEFT OUTER JOIN
dbo.DimServiceDiv AS srvDiv ON fct.pesServiceDivID = srvDiv.sgID
GROUP BY unt.untName
HAVING (deas.diDate BETWEEN
CONVERT(DATETIME, @FromDate, 102)
AND
CONVERT(DATETIME, @ToDate, 102))
我認爲這是因爲unt.UntName在我的左連接,所以我不能在連接外部使用它嗎?我有點困惑,因爲當我把它像這樣它的工作原理:當你使用一個GROUP BY
GROUP BY unt.untName, Pat.PatName, srvDiv.sgMType,
Pat.PatMRank, Pat.PatMilitaryID, unt.untName,
fct.pesStatusCode, fct.pesSignedDate
任何幫助表示讚賞
「我想按單元名稱對結果進行分組」 - 我認爲你無法理解SQL中的「group by」的作用:這意味着對於每個唯一的分組值,只會返回一行 - 所以如果將group按單位名稱,每個單位只能得到一行,**無論該單位有多少個病人**。你究竟在做什麼*嘗試*做什麼? – 2013-04-20 09:29:59