SELECT a.branch_name
,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201403'THEN b.flow_no END)[2014年3月份单号总计]
,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201404'THEN b.flow_no END)[2014年4月份单号总计]
,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201405'THEN b.flow_no END)[2014年5月份单号总计]
,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201406'THEN b.flow_no END)[2014年6月份单号总计]
,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201407'THEN b.flow_no END)[2014年7月份单号总计]
,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201408'THEN b.flow_no END)[2014年8月份单号总计]
,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201409'THEN b.flow_no END)[2014年9月份单号总计]
,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201410'THEN b.flow_no END)[2014年10月份单号总计]
,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201411'THEN b.flow_no END)[2014年11月份单号总计]
,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201412'THEN b.flow_no END)[2014年12月份单号总计]
,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201501'THEN b.flow_no END)[2014年1月份单号总计]
,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201502'THEN b.flow_no END)[2015年2月份单号总计]
,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201503'THEN b.flow_no END)[2015年3月份单号总计]
,COUNT(DISTINCT b.flow_no)[总合计]
FROM bi_t_branch_info a
JOIN pos_t_payflow b ON a.branch_no=b.branch_no
WHERE b.oper_date BETWEEN '20140301'AND'20150331'
GROUP BY a.branch_name
SELECT a.branch_name
,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201403'THEN b.flow_no END)[2014年3月份单号总计]
,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201404'THEN b.flow_no END)[2014年4月份单号总计]
,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201405'THEN b.flow_no END)[2014年5月份单号总计]
,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201406'THEN b.flow_no END)[2014年6月份单号总计]
,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201407'THEN b.flow_no END)[2014年7月份单号总计]
,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201408'THEN b.flow_no END)[2014年8月份单号总计]
,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201409'THEN b.flow_no END)[2014年9月份单号总计]
,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201410'THEN b.flow_no END)[2014年10月份单号总计]
,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201411'THEN b.flow_no END)[2014年11月份单号总计]
,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201412'THEN b.flow_no END)[2014年12月份单号总计]
,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201501'THEN b.flow_no END)[2014年1月份单号总计]
,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201502'THEN b.flow_no END)[2015年2月份单号总计]
,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201503'THEN b.flow_no END)[2015年3月份单号总计]
,COUNT(DISTINCT b.flow_no)[总合计]
FROM bi_t_branch_info a
JOIN pos_t_payflow b ON a.branch_no=b.branch_no
WHERE b.oper_date BETWEEN '20140301'AND'20150331'
GROUP BY a.branch_name
SELECT a.branch_name
,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201403'THEN b.flow_no END)[2014年3月份单号总计]
,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201404'THEN b.flow_no END)[2014年4月份单号总计]
,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201405'THEN b.flow_no END)[2014年5月份单号总计]
,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201406'THEN b.flow_no END)[2014年6月份单号总计]
,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201407'THEN b.flow_no END)[2014年7月份单号总计]
,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201408'THEN b.flow_no END)[2014年8月份单号总计]
,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201409'THEN b.flow_no END)[2014年9月份单号总计]
,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201410'THEN b.flow_no END)[2014年10月份单号总计]
,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201411'THEN b.flow_no END)[2014年11月份单号总计]
,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201412'THEN b.flow_no END)[2014年12月份单号总计]
,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201501'THEN b.flow_no END)[2014年1月份单号总计]
,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201502'THEN b.flow_no END)[2015年2月份单号总计]
,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201503'THEN b.flow_no END)[2015年3月份单号总计]
,COUNT(DISTINCT b.flow_no)[总合计]
FROM bi_t_branch_info a
JOIN pos_t_payflow b ON a.branch_no=b.branch_no
WHERE b.oper_date BETWEEN '20140301'AND'20150331'
GROUP BY a.branch_name
SELECT a.branch_name
,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201403'THEN b.flow_no END)[2014年3月份单号总计]
,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201404'THEN b.flow_no END)[2014年4月份单号总计]
,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201405'THEN b.flow_no END)[2014年5月份单号总计]
,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201406'THEN b.flow_no END)[2014年6月份单号总计]
,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201407'THEN b.flow_no END)[2014年7月份单号总计]
,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201408'THEN b.flow_no END)[2014年8月份单号总计]
,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201409'THEN b.flow_no END)[2014年9月份单号总计]
,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201410'THEN b.flow_no END)[2014年10月份单号总计]
,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201411'THEN b.flow_no END)[2014年11月份单号总计]
,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201412'THEN b.flow_no END)[2014年12月份单号总计]
,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201401'THEN b.flow_no END)[2014年1月份单号总计]
,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201402'THEN b.flow_no END)[2015年2月份单号总计]
,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201403'THEN b.flow_no END)[2015年3月份单号总计]
FROM bi_t_branch_info a
JOIN pos_t_payflow b ON a.branch_no=b.branch_no
GROUP BY a.branch_name
之前我搞错了
但有个地方你需要理解清楚 GROUP BY的意思,不能把b.flow_no,b.oper_date 也加进来,那就形似神非了,不知道在统计什么了[/quote]
你好,还有一个小问题,执行以上语句后,发现有些门店为0的全部统计出来了,不知如何修改了? 还有所有月份的最后一列,再加上一个总合计。
SELECT a.branch_name
,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201403'THEN b.flow_no END)[2014年3月份单号总计]
,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201404'THEN b.flow_no END)[2014年4月份单号总计]
,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201405'THEN b.flow_no END)[2014年5月份单号总计]
,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201406'THEN b.flow_no END)[2014年6月份单号总计]
,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201407'THEN b.flow_no END)[2014年7月份单号总计]
,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201408'THEN b.flow_no END)[2014年8月份单号总计]
,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201409'THEN b.flow_no END)[2014年9月份单号总计]
,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201410'THEN b.flow_no END)[2014年10月份单号总计]
,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201411'THEN b.flow_no END)[2014年11月份单号总计]
,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201412'THEN b.flow_no END)[2014年12月份单号总计]
,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201401'THEN b.flow_no END)[2014年1月份单号总计]
,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201402'THEN b.flow_no END)[2015年2月份单号总计]
,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201403'THEN b.flow_no END)[2015年3月份单号总计]
FROM bi_t_branch_info a
JOIN pos_t_payflow b ON a.branch_no=b.branch_no
GROUP BY a.branch_name
之前我搞错了
但有个地方你需要理解清楚 GROUP BY的意思,不能把b.flow_no,b.oper_date 也加进来,那就形似神非了,不知道在统计什么了[/quote]
谢谢,终于搞定了,非常感谢您的耐心。
当前的语句只能统计每个单号的合计数。
SELECT b.flow_no, a.branch_name,
sum(distinct CASE WHEN CONVERT(VARCHAR(6), b.oper_date,112)='201403'THEN 1 END)[2014年3月份单号总计]
FROM dbo.pos_t_payflow b,bi_t_branch_info a where b.oper_date>= '2014-03-01 00:00:00'
And b.oper_date<= '2014-03-01 23:59:59' and a.branch_no=b.branch_no
group by
b.flow_no,a.branch_name,b.oper_date
SELECT 门店名称
,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),时间,112)='201403'THEN 单号 END)[2014年3月份单号总计]
,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),时间,112)='201404'THEN 单号 END)[2014年4月份单号总计]
,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),时间,112)='201504'THEN 单号 END)[2015年4月份单号总计]
FROM 销售明细表 GROUP BY 门店名称