请教一个关于插入小计合计的sql语句
表名:xydjb
记录如下:
djdd xm cx
即墨 刘彩云 C1
即墨 谭华 C1
城阳 王涛 C1
城阳 杨分分 C1
城阳 周建 C1
莱西 孙李忠 C1
要求结果是列出明细并且按DJDD插入人数小计,最后有合计总人数。
djdd xm cx
即墨 刘彩云 C1
即墨 谭华 C1
人数小计:2
城阳 王涛 C1
城阳 杨分分 C1
城阳 周建 C1
人数小计:3
莱西 孙李忠 C1
人数小计:1
人数合计:6
第一位仁兄结果根本不对,第二位只显示汇总行数,没有明细,第三位不知所云。要求一条语句完成。
第五位的还是只显示合计数,没显示明细。 展开
select case when djddg=0 and xmg=1 and cxg=1 then '人数小计:'
when djddg=1 and xmg=1 and cxg=1 then '人数合计:'
else djdd
end as djdd,
case when djddg=0 and xmg=1 and cxg=1 then CONVERT(VARCHAR,sm)
when djddg=1 and xmg=1 and cxg=1 then CONVERT(VARCHAR,sm)
else xm
end as xm,
cx
from
(
select
djdd,xm,cx,sum(1) as sm,
GROUPING(djdd) AS djddg,
GROUPING(xm) AS xmg,
GROUPING(cx) AS cxg
from xydjb
group by djdd,xm,cx WITH ROLLUP
) tmp
where not(djddg=0 and xmg=0 and cxg=1);
************
截图竟参考:
************
---
以上,希望对你有所帮助。
select count(xm) '人数合计' from xydjb;
一条sql.
select isnull(x.djdd,'人数合计') djdd,sum(x.xm) as '人数小计' from (select djdd,count(xm) xm from xydjb group by djdd) x group by x.djdd with rollup;
group by djdd,xm,cx