无法得到汇总期望的结果
SELECT
货类代码.名称,
ISNULL ((SELECT SUM(吞吐量) WHERE (出口 = 'true ')), 0) AS 出口,
ISNULL ((SELECT SUM(吞吐量) WHERE (出口 = 'false ')), 0) AS 进口,
SUM(三量记录.吞吐量) AS 合计
FROM 三量记录
RIGHT JOIN 货类代码 ON 货类代码.货类代码 = 三量记录.货类代码
WHERE 三量记录.日期 between @StartDate and @EndDate
GROUP BY 货类代码.名称
-------------------------------------
为什么以上代码只有合计输出的是期望值,出口和进口都没有按照货类代码.名称分类汇总?另外RIGHT JOIN好像也没有起到效果。
以上代码该如何修改?
------解决方案--------------------SELECT
货类代码.名称,
sum(case 出品 when 'true ' then 吞吐量 else 0 end) as 出口,
sum(case 出品 when 'false ' then 吞吐量 else 0 end) as 进口,
SUM(三量记录.吞吐量) AS 合计
FROM 三量记录
inner JOIN 货类代码 ON 货类代码.货类代码 = 三量记录.货类代码
WHERE 三量记录.日期 between @StartDate and @EndDate
GROUP BY 货类代码.名称
------解决方案--------------------楼主用case就行了,
楼主用的子查询语句
SELECT SUM(吞吐量) WHERE (出口 = 'true '))--需要加时间段
------解决方案--------------------你要的效果應該是對B表加上條件查詢後再和A表關聯,所以要用And。
而如果用Where,是A B表關聯之後,再判斷,就會將一些數據過濾掉,就沒得到你要的結果了。