나는 "Slots.SlotID = Events.MainSlot 또는 Events.ExtraSlot 어디 테이블"이벤트 "및 테이블"Slots "있습니다.두 SUM 쿼리 함께
나는 시간 슬롯 당 "참석자"의 수를 요약합니다 (MainSlot로하고 ExtraSlot로 - ExtraSlot는 선택 사항입니다)
표 "이벤트"
ID------Name----------MainSlot-------ExtraSlot-------Attendees
1-------Event1--------1 -------------n/a-------------20
2-------Event2--------1 -------------n/a-------------20
3-------Event3--------2 -------------n/a-------------40
4-------Event4--------2 -------------3---------------20
5-------Event5--------3 -------------4---------------40
6-------Event6--------3 -------------4---------------20
7-------Event7--------3 -------------4---------------10
표 "슬롯"
내가 별도로 데이터베이스를 조회하는 경우
SlotID--- Slot
1-------- 9.00-9.30
2-------- 9.30-10
3-------- 10.30-10.30
4-------- 10.30-11
다음과 같이
SELECT s.Slot, s.SlotID, ISNULL(SUM(e. Attendees), 0) AS Attendees1
FROM Slots AS s
LEFT OUTER JOIN Events AS e ON e.MainSlot = s.SlotID
GROUP BY s.Slot, s.SlotID
... 나 :
SELECT s.Slot, s.SlotID, ISNULL(SUM(x.Attendees), 0) AS Attendees2
FROM Slots AS s
LEFT OUTER JOIN Events AS x ON x.ExtraSlot = s.SlotID
GROUP BY s.Slot, s.SlotID
나는 각각 다음을 얻을 :
SlotID ------ Attendees1
1------------- 40
2------------- 60
3------------- 70
4------------- 0
SlotID ------- Attendees2
1------------- 0
2------------- 0
3------------- 20 *correct
4------------- 70
모두 결과가 정확합니다. 내가 뭔가를 두 개의 쿼리를 함께 넣어 경우
그러나 내가 잘못 뭐하는 거지
SELECT s.Slot, s.SlotID, ISNULL(SUM(e.Attendees), 0) AS Attendees1,
ISNULL(SUM(x. Attendees), 0) AS Attendees2
FROM Slots AS s LEFT OUTER JOIN
Events AS e ON e.MainSlot = s.SlotID LEFT OUTER JOIN
Events AS x ON x.ExtraSlot = s.SlotID
GROUP BY s.Slot, s.SlotID
SlotID------------- Attendees1---------- Attendees2
1-------------------40-------------------0
2-------------------60-------------------0
3-------------------70------------------60 *wrong
4-------------------0-------------------70
아래 표와 같이 잘못? 당신의 도움을 주셔서 감사합니다!
어떤 데이터베이스를 사용하고 있습니까? –
왜 두 개의 subselect를 사용하여 결과를 합산하지 않는 것이 좋을까요? –
안녕하세요, 저는 SQLServer를 사용하고 있습니다. James, 어떻게해야합니까? –