0
TL; DR如何返回列而不將它們添加到MSSQL中的GROUP BY子句中?以下是犯罪陳述。Group按照正確的用法
大家好, 所以我最近問了這個question,並得到了一個很好的解決方案,我能夠解剖和重新組裝我的問題。下面是最終的結果
WITH UC AS
(
SELECT OSJ.opportunityid, OS.status,
ROW_NUMBER() OVER (PARTITION BY OSJ.opportunityid ORDER BY creationdate DESC) RN
FROM Opportunitystatusjoin OSJ
JOIN OpportunityStatus OS ON OSJ.opportunitystatusid = OS.opportunitystatusid
)
SELECT O.opportunityid , O.salesperson ,
MAX(CASE
WHEN RN = 1
THEN UC.status
END) AS MostRecent ,
MAX(CASE
WHEN RN = 2
THEN UC.status
END) AS SecondMostRecent
FROM Opportunity O
JOIN UC ON UC.opportunityid = O.opportunityid
WHERE UC.RN <= 2
GROUP BY O.opportunityid , O.salesperson
現在,如果我想從機遇表即O.shoesize,O.favorite_color返回多個列,我將它們添加到我的GROUP BY子句。但我只是覺得髒兮兮的,因爲我不想將其他專欄分組,我只是希望他們能夠以各自的機會出現。
我在互聯網上發現的一篇博客表示,儘可能將您的GROUP BY子句儘可能嵌入您的嵌套選擇中。但是,由於我使用的是第一條語句(「與UC ...」),似乎讓事情變得不直觀。包含表格中的其他列而不將其添加到GROUP BY子句的聰明方法是什麼?
,我不認爲在列的值都將是相同的,因爲返回的商機將會有不同的鞋子和favorite_colors。 – 2012-02-13 16:16:49
然後你想要列出哪些。如果您想列出所有需要使用GROUP BY的可能組合。 – zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 2012-02-13 16:35:31