好的 - 我已经看过,看过并找到很多示例,但没有满足我的需要。也许我用错误的词搜索,但我可以使用你的帮助。我会尽可能详细地提供。如何从联合声明中删除重复的行
我需要生成一个报告,将两个表(或者说一个视图和一个表)的字段合并到一个报表的表中。下面是我使用的语句:
SELECT A.ConfInt, A.Conference,
NULL as Ordered,
NULL as Approved,
NULL as PickedUp,
SUM(dbo.Case_Visit_Payments.Qty) AS Qty
FROM dbo.Conferences as A INNER JOIN
dbo.Case_Table ON A.ConfInt = dbo.Case_Table.Conference_ID INNER JOIN
dbo.Case_Visit_Payments ON dbo.Case_Table.Case_ID = dbo.Case_Visit_Payments.Case_ID
WHERE (dbo.Case_Visit_Payments.Item_ID = 15 AND A.ProjectCool = 1)
GROUP BY A.Conference, A.ConfInt
UNION
SELECT B.ConfInt,
B.Conference,
SUM(dbo.Cool_Fan_Order.NumberOfFansRequested) AS Ordered,
SUM(dbo.Cool_Fan_Order.Qty_Fans_Approved) AS Approved,
SUM(dbo.Cool_Fan_Order.Qty_Fans_PickedUp) AS PickedUp,
NULL AS Qty
FROM dbo.Conferences as B LEFT OUTER JOIN
dbo.Cool_Fan_Order ON B.ConfInt = dbo.Cool_Fan_Order.Conference_ID
where B.ProjectCool = 1
GROUP BY B.Conference, B.ConfInt
,这里是结果:
4 Our Lady NULL NULL NULL 11
4 Our Lady 40 40 40 NULL
7 Holy Rosary 20 20 20 NULL
11 Little Flower NULL NULL NULL 21
11 Little Flower 5 5 20 NULL
19 Perpetual Help NULL NULL NULL 2
19 Perpetual Help 20 20 20 NULL
我强烈希望是没有重复的行,如:
4 Our Lady 40 40 40 11
7 Holy Rosary 20 20 20 NULL
11 Little Flower 5 5 20 21
19 Perpetual Help 20 20 20 2
我希望这个问题很清楚。任何建议将不胜感激。我的确标记为已回答。 :)
格雷戈里
相关的子查询有诀窍。它工作完美。谢谢一堆。 –
顺便说一句:公共表表达式在SELECT列表中与相关子查询语句不是必需的; CTE可以很容易地用一个内联视图(在FROM子句中)替换,如果这是MySQL,我们需要这么做。 – spencer7593