表中数据:
ProCD ProNM
001 a
001 a
001 b
002 b
003 c
004 c
005 d
做完统计后:
ProCD ProNM
001 a
001 a
小计 2
001 b
002 b
小计 2
003 c
004 c
小计 2
005 d
小计 1
总计 7
这样的 sql 语句如何实现?哪位大侠指点一下
http://www.cnblogs.com/downmoon/archive/2012/04/06/2433988.html
SQL Server 2008的解决方案,也许对你有帮助!
一条SQL是解决不了的。需要多条来实现,最好通过临时表处理。
搞几个表变量吧!要不直接把数据取出来,然后用Linq搞!!
select ProCD=case when isnull(ProCD,'')='' Then '小计' else ProCD end,ProNM
from (
select rw=row_number()over(partition by ProNM order by ProCD),ProNMList=ProNM,ProCD,ProNM from emp
union all
SELECT rw=999999999999,ProNMList=ProNM,ProCD='',ProNM=cast(COUNT(1) as nvarchar(20)) FROM emp GROUP BY ProNM
union all
SELECT rw=9999999999999999,ProNMList='zzzzzzzzzzzzzzzzzzz',ProCD='',ProNM=cast(COUNT(1) as nvarchar(20)) FROM emp
) a
order by ProNMlist,rw