有A表
ID zhuangtai jine
1 1 800.414
2 1 300.423
3 0 3000.421
4 0 1000.531
要求查询显示
zhuangtai 为0或1 时分别计算 金额字段 来显示 用SQL语句 或存储过程都行
保留两位小数 四舍五入
状态1时 jine 状态0时 jine
1 1100.84 0 4000.95
------解决方案--------------------
- SQL code
SELECT zhuantai,ROUND(SUM(jine),2) as jineFROM TableAGROUP BY zhuantai
------解决方案--------------------
- SQL code
SELECT 状态1时 = 1, jine = SUM(CASE WHEN zhuangtai = 1 THEN jine END), 状态0时 = 0, jine = SUM(CASE WHEN zhuangtai = 0 THEN jine END)FROM A
------解决方案--------------------
- SQL code
SELECT 状态1时 = SUM(CASE WHEN zhuangtai = 1 THEN 1 END), jine = SUM(CASE WHEN zhuangtai = 1 THEN jine END), 状态0时 = SUM(CASE WHEN zhuangtai = 0 THEN 1 END), jine = SUM(CASE WHEN zhuangtai = 0 THEN jine END)FROM A
------解决方案--------------------
- SQL code
SELECT 状态1时 =SUM(CASE WHEN zhuangtai = 1 THEN 1 END), jine = cast(SUM(CASE WHEN zhuangtai = 1 THEN jine END) as decimal(10,2)), 状态0时 =SUM(CASE WHEN zhuangtai = 0 THEN 1 END), jine = cast(SUM(CASE WHEN zhuangtai = 0 THEN jine END) as decimal(10,2))FROM @t
------解决方案--------------------
------解决方案--------------------
- SQL code
create table tb(ID int,zhuangtai int, jine decimal(8,3))insert into tb select 1, 1, 800.414 union all select 2, 1, 300.423 union all select3, 0, 3000.421 union all select4, 0, 1000.531 union all select5, 0, 100 goSELECT 状态1时 = sum(case when zhuangtai=1 then 1 else 0 end), jine1 = cast(SUM(CASE WHEN zhuangtai = 1 THEN jine END)as decimal(8,2)), 状态0时 = sum(case when zhuangtai=0 then 1 else 0 end), jine2 = cast(SUM(CASE WHEN zhuangtai = 0 THEN jine END) as decimal(8,2))FROM tbgodrop table tb/*状态1时 jine1 状态0时 jine2----------- --------------------------------------- ----------- ---------------------------------------2 1100.84 3 4100.95*/