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 BY 절을 채우라고했습니다. 그러나, 나는 처음 문장 ("with UC ...")을 사용하기 때문에 직관적이지 않은 것으로 보인다. GROUP BY 절에 추가하지 않고 내 테이블의 다른 열을 포함시키는 것이 현명한 방법입니다. 열이 당신에 의해 그룹화되어 모두에 대해 동일한 값 위하여려고하는 경우에
나는 열에 대한 값이 모두 동일합니다 생각하지 않습니다 , 반환 된 기회에 대한 shoesizes 및 favorite_colors 다양한 변화가있을 것입니다. –
다음 중 어떤 것을 나열 하시겠습니까? 가능한 모든 조합을 나열하려면 GROUP BY를 사용해야합니다. – zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz