我有两张桌子:
我想输出以下内容:
我试过这句话:
SELECT TableA.bu_code
, SUM(TableB.count_invalid_date) AS TotalInvDate
FROM TableA
LEFT JOIN TableB ON TableA.bu_code = TableB.bu_code
GROUP BY TableA.bu_code
但它没有显示TableA中表示的每一行,而是执行此操作:
是否有一个可以输出我想要的SQL语句?
答案 0 :(得分:0)
您可以在执行left join
后使用group by
:
SELECT a.bu_code, COALESCE (TotalInvDate, 0)
FROM TableA a
LEFT JOIN (SELECT bu_code, SUM(count_invalid_date) AS TotalInvDate
FROM TableB
GROUP BY bu_code) b ON a.bu_code = b.bu_code
答案 1 :(得分:0)
TableAU中可能存在没有父行的孤立表行。
如果是这样,请使用此GROUP BY语法查看它们。
GROUP BY ROLLUP(TableA.bu_code)
有关ROLLUP选项的更多详细信息,请参阅此Microsoft SQL-Server page on the GROUP BY
clause。
答案 2 :(得分:0)
SELECT A.bu_code AS [bu_code],
ISNULL(sum( B.count_invalid_date),0) AS [TotalInvDate]
FROM
TableA A
left JOIN
TableB B
ON
A.bu_code=B.bu_code
GROUP BY
A.bu_code