日期 操作员 客户号 街道 计量方式 收款额
2008-7-3 A 0010 北京路 有表 150
2008-7-3 A 0050 上海路 有表 150
2008-7-3 A 0710 北京路 无表 100
2008-7-3 C 0910 南京路 有表 100
2008-7-3 A 0970 南京路 有表 100
2008-7-3 A 0060 北京路 有表 100
2008-7-3 E 0050 上海路 有表 150
2008-7-3 A 0720 北京路 无表 100
2008-7-3 C 0930 南京路 有表 100
...........
...........要求统计成如下格式
日期 操作员 街道 有表收款额 无表收款额 收款客户数
2008-7-3 A 北京路 250 200 4
2008-7-3 A 上海路 150 0 1
2008-7-3 A 南京路 100 0 1
2008-7-3 c 北京路 ... ... ...
2008-7-3 c 上海路 ... ... ...
2008-7-3 c 南京路 ... ... ...
.................
就是要统计出 不同日期、不同操作员在不同街道分别收取的有表和无表款。sql 中该如何查询?
2008-7-3 A 0010 北京路 有表 150
2008-7-3 A 0050 上海路 有表 150
2008-7-3 A 0710 北京路 无表 100
2008-7-3 C 0910 南京路 有表 100
2008-7-3 A 0970 南京路 有表 100
2008-7-3 A 0060 北京路 有表 100
2008-7-3 E 0050 上海路 有表 150
2008-7-3 A 0720 北京路 无表 100
2008-7-3 C 0930 南京路 有表 100
...........
...........要求统计成如下格式
日期 操作员 街道 有表收款额 无表收款额 收款客户数
2008-7-3 A 北京路 250 200 4
2008-7-3 A 上海路 150 0 1
2008-7-3 A 南京路 100 0 1
2008-7-3 c 北京路 ... ... ...
2008-7-3 c 上海路 ... ... ...
2008-7-3 c 南京路 ... ... ...
.................
就是要统计出 不同日期、不同操作员在不同街道分别收取的有表和无表款。sql 中该如何查询?
日期,
操作员,
街道,
[有表收款额]=sum(case when [计量方式]=N'有表' then 收款额 else 0 end),
[无表收款额]=sum(case when [计量方式]=N'无表' then 收款额 else 0 end),
[收款额]=count(客户号)
from
Table1
group by 日期,操作员,街道
[有表收款额]=sum(case when [计量方式]=N'有表' then 收款额 else 0 end),
[无表收款额]=sum(case when [计量方式]=N'无表' then 收款额 else 0 end),
[收款额]=count(客户号)
from Tb
group by 日期,操作员,街道
日期,
操作员,
街道,
[有表收款额]=sum(case when [计量方式]='有表' then 收款额 else 0 end),
[无表收款额]=sum(case when [计量方式]='无表' then 收款额 else 0 end),
[收款额]=count(*)
from
Table1
group by 日期,操作员,街道
INSERT INTO @TB SELECT '2008-7-3','A','0010','北京路','有表',150
UNION ALL SELECT '2008-7-3','A','0050','上海路','有表',150
UNION ALL SELECT '2008-7-3','A','0710','北京路','无表',100
UNION ALL SELECT '2008-7-3','C','0910','南京路','有表',100
UNION ALL SELECT '2008-7-3','A','0970','南京路','有表',100
UNION ALL SELECT '2008-7-3','A','0060','北京路','有表',100
UNION ALL SELECT '2008-7-3','E','0050','上海路','有表',150
UNION ALL SELECT '2008-7-3','A','0720','北京路','无表',100
UNION ALL SELECT '2008-7-3','C','0930','南京路','有表',100
SELECT
日期,
操作员,
街道,
有表收款额=sum(case when 计量方式=N'有表' then 收款额 else 0 end),
无表收款额=sum(case when 计量方式=N'无表' then 收款额 else 0 end),
收款=count(客户号)
FROM
@TB
GROUP BY 日期,操作员,街道
/*
日期 操作员 街道 有表收款额 无表收款额 收款
------------------------------------------------------ ----- -------------------- ----------- ----------- -----------
2008-07-03 00:00:00.000 A 北京路 250 200 4
2008-07-03 00:00:00.000 A 南京路 100 0 1
2008-07-03 00:00:00.000 A 上海路 150 0 1
2008-07-03 00:00:00.000 C 南京路 200 0 2
2008-07-03 00:00:00.000 E 上海路 150 0 1(所影响的行数为 5 行)
*/
[有表收款额]=sum(case when [计量方式]=N'有表' then 收款额 else 0 end),
[无表收款额]=sum(case when [计量方式]=N'无表' then 收款额 else 0 end),
[收款额]=count(客户号)
from Tb
group by 日期,操作员,街道