读书人

无法得到汇总期望的结果,该怎么处理

发布时间: 2012-01-21 21:31:43 作者: rapoo

无法得到汇总期望的结果
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表之後,再判,就一些掉,就得到你要的果了。

读书人网 >SQL Server

热点推荐