一个汇总查询的小问题
出库总表
出库单序号 店面编号 客户编号 出库日期 库管编号 是否冲销
1 1 1 YYYY-MM-DD HH:MM:SS 1 1
N N N YYYY-MM-DD HH:MM:SS N 0
------------------------------
出库明细表
出库单序号 商品编号 结算方式 出库量 结算量
1 1 现金 1 1
N N 卡付 N N
------------------------------
输出下面这种结果集:
店面编号 客户编号 商品编号 出库量 现金结算量 卡付结算量
我用下面这两段简单语句测试了一下
SELECT 出库总表.店面编号 店面编号,
出库明细表.商品编号 商品编号,
SUM(CASE 结算方式 WHEN '现金' THEN 1 ELSE 0 END) AS 现金结算量
FROM 出库总表,出库明细表
WHERE 出库总表.出库单序号 = 出库明细表.出库单序号 AND
出库总表.是否冲销 = 0 AND
出库总表.门店编号 = 1 AND
出库明细表.商品编号 = 1 AND
(出库总表.出库日期 BETWEEN '2012-1-1 0:00:00' AND '2012-12-31 23:59:59')
GROUP BY 出库总表.店面编号,
出库明细表.商品编号
SELECT 出库总表.店面编号 店面编号,
出库明细表.商品编号 商品编号,
SUM(出库明细表.出库量) AS 现金结算量
FROM 出库总表,出库明细表
WHERE 出库总表.出库单序号 = 出库明细表.出库单序号 AND
出库总表.是否冲销 = 0 AND
出库总表.门店编号 = 1 AND
出库明细表.商品编号 =1 and
出库明细表.结算方式 = '现金'1 AND
(出库总表.业务日期 BETWEEN '2012-1-1 0:00:00' AND '2012-12-31 23:59:59')
GROUP BY 出库总表.店面编号,
出库明细表.商品编号
,首先,第一段得到的SUM结果肯定不对,但我不了解哪里不对;
其次,两段语句条件相同,SUM的结果却不一样,不知道它们的区别在哪里?
CASE
SUM
行转列
------解决方案--------------------SUM(CASE 结算方式 WHEN '现金' THEN 1 ELSE 0 END) AS 现金结算量
应该改成
SUM(CASE 结算方式 WHEN '现金' THEN 出库明细表.出库量 ELSE 0 END) AS 现金结算量
然后时间条件上,如果是标准时间格式的话,应该写'2012-01-01 00:00:00'
------解决方案--------------------then 1的话,就变成了sum(1),1是常量,那么sum这组值就是1+1+1+...1
then 出库明细表.出库量,这是个列,那么sum这组值就是每一行的出库明细表.出库量相加
这么说不知道解释的清楚不呵呵