TL; DR MSSQLのGROUP BY句にカラムを追加せずにカラムを返すにはどうすればよいですか?刑事声明は以下の通りです。グループを適切に使用する
こんにちは、誰も、 私は最近、このquestionと尋ねた私は解剖することができた素晴らしい解決策を得て、スイートに私の問題を再構築しました。私はO.shoesize、O.favorite_colorすなわち商談テーブルから複数の列を返すようにしたい場合はここで今、最終的な結果
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
ですが、私は私のBY句GROUPに追加する必要があります。しかし、私は他の列をグループ化しようとしていないので、ちょうど汚い気持ちになります。私は彼らにそれぞれの機会を見せてほしいのです。
インターネット上で見つけたブログは、できるだけネストされた選択肢まであなたのGROUP BY句を埋めると言っていました。しかし、私は最初のステートメント( "with UC ...")を使用しているので、直感的ではありません。 GROUP BY句に追加することなく、テーブルの他の列を含めることは賢明な方法です。
を私は列の値がすべて同じになるとは思いません返された機会のためのshoesizesとfavorite_colorsの変化があるためです。 –
次に、どのものをリストしますか? GROUP BYを使用する必要があるすべての組み合わせをリストしたい場合。 – zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz