按照相应时间段来统计每家门店每月的单号总数以及分别汇总相应门店的单号汇总数-未解决

szlixiaolong 2015-03-09 02:44:28
pos_t_payflow 表结构:flow_no代表单号,branch_no代表门店编号,oper_date代表操作时间。
bi_t_branch_info表结构:branch_no代表门店编号,branch_name代表门店名称。

branch_name flow_no oper_date
A门店 030214030100014 2014-03-01 10:04:54:376
B门店 040214030200014 2014-03-02 10:04:54:376
C门店 050214030300014 2014-03-03 10:04:54:376
A门店 030214040100015 2014-04-01 10:04:54:376
B门店 040214040200015 2014-04-02 10:04:54:376
C门店 050214040300015 2014-04-03 10:04:54:376
A门店 030214030100015 2014-03-01 10:05:54:376
B门店 040214030200015 2014-03-02 10:05:54:376
C门店 050214030300015 2014-03-03 10:05:54:376
A门店 030214040100016 2014-04-01 10:05:54:376
B门店 040214040200016 2014-04-02 10:05:54:376
C门店 050214040300016 2014-04-03 10:05:54:376
A门店 030215040100016 2015-03-01 10:05:54:376
B门店 040215040200016 2015-03-02 10:05:54:376
C门店 050215040300016 2015-03-03 10:05:54:376


最终需要实现的数据统计如下,flow_no中内容不能重复:
门店名称 2014年3月份单号总计 2014年4月份单号总计 2014年5月份单号总计 2014年6月份单号总计 2014年7月份单号总计 2014年8月份单号总计 2014年9月份单号总计 2014年10月份单号总计 2014年11月份单号总计 2014年12月份单号总计 2015年1月份单号总计 2015年2月份单号总计 2015年3月份单号总计
A门店 2 2 1
B门店 2 2 1
C门店 2 2 1
...全文
156 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
szlixiaolong 2015-03-09
  • 打赏
  • 举报
回复
SELECT a.branch_name ,SUM(CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201403'THEN 1 END)[2014年3月份单号总计] ,SUM(CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201404'THEN 1 END)[2014年4月份单号总计] ,SUM(CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201405'THEN 1 END)[2014年5月份单号总计] ,SUM(CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201406'THEN 1 END)[2014年6月份单号总计] ,SUM(CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201407'THEN 1 END)[2014年7月份单号总计] ,SUM(CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201408'THEN 1 END)[2014年8月份单号总计] ,SUM(CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201409'THEN 1 END)[2014年9月份单号总计] ,SUM(CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201410'THEN 1 END)[2014年10月份单号总计] ,SUM(CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201411'THEN 1 END)[2014年11月份单号总计] ,SUM(CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201412'THEN 1 END)[2014年12月份单号总计] ,SUM(CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201401'THEN 1 END)[2014年1月份单号总计] ,SUM(CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201402'THEN 1 END)[2015年2月份单号总计] ,SUM(CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201403'THEN 1 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 你好,我把你的语句执行了一下,数据统计了所有单号,而不是把重复的单号保留1行以及最终统计出来。
还在加载中灬 2015-03-09
  • 打赏
  • 举报
回复
我是隔一段时间看一下论坛,另一个贴已经回复你了....
szlixiaolong 2015-03-09
  • 打赏
  • 举报
回复
当前的语句只能统计每个单号的合计数。 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 现在还是不能统计相应月份所有单号的汇总数。

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧