Два запроса СУММЫ вместе

Я устанавливаю все расширения оболочки, которые я обычно использую (TortoiseSVN и CommandHere, например).

кроме того, одна из первых вещей я делаю после того, как я повторно отображаю машину, удостоверяются, что она сцепляется со всеми моими сетевыми ресурсами правильно. Немного вещей пускают под откос мою работу так же быстро как имеющий необходимость бороться с сетью для получения файла в несвоевременное время.

5
задан Quassnoi 2 November 2009 в 22:18
поделиться

4 ответа

Я предполагаю, что это связано с тем фактом, что у вас есть записи в обеих группах для этой группы. Попробуйте следующее (сервер MSSQL)

SELECT s.Slot, s.SlotID, ISNULL(SUM(e.Attendees), 0) AS Attendees1,
ISNULL(SUM(CASE WHEN  x. Attendees IS NULL THEN 0 ELSE x.Attendees END), 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 
0
ответ дан 15 December 2019 в 06:29
поделиться
SELECT  s.SlotId,
        COALESCE(
        (
        SELECT  SUM(attendees)
        FROM    events ea
        WHERE   ea.MainSlot = s.SlotId
        ), 0) AS AttendeesAsMain,
        COALESCE(
        (
        SELECT  SUM(attendees)
        FROM    events ea
        WHERE   ea.ExtraSlot = s.SlotId
        ), 0) AS AttendeesAsExtra
FROM    Slots s
3
ответ дан 15 December 2019 в 06:29
поделиться
    SELECT a.SlotID, Attendees1, Attendees2 FROM
         (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) as a,

         (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) as b
    WHERE a.SlotID = b.SlotID
0
ответ дан 15 December 2019 в 06:29
поделиться

Вы присоединяетесь дважды, поэтому вы получите дублирующиеся результаты в своем возвращении. В основном вы получаете это:

slotid ...... e.mainslot ...... x.extraslot ....... x.attendees ..... e.attendees

3 ........... 3 ............... 3 ................. 20 ... ........... 40
3 ........... 3 ............... 3 ................. 20 ... ........... 20
3 ........... 3 ............... 3 ................. 20 ... ........... 10

Это ожидаемое поведение, потому что вы присоединяете X к каждой результирующей строке из слотов JOIN E.

0
ответ дан 15 December 2019 в 06:29
поделиться