34,593
社区成员
发帖
与我相关
我的任务
分享
select cast((cast(3 as numeric(18,2))/cast(4 as numeric(18,2))) as numeric(18,2)) as f
/*
f
---------------------------------------
0.75
(1 行受影响)
*/
SELECT A1 = SUM(CASE WHEN Flag = 1 THEN OrgID END)
,A2 = SUM(CASE WHEN Type = 2 THEN OrgID END)
,A3 = CASE WHEN SUM(CASE WHEN Type = 2 THEN OrgID END) = 0 THEN 0
ELSE SUM(CASE WHEN Flag = 1 THEN OrgID END)* 1.0
/SUM(CASE WHEN Type = 2 THEN OrgID END) END
FROM A
if object_id('a') IS NOT NULL
drop table a
create table a(OrgID [int] IDENTITY(1,1) NOT NULL, Flag int,Type int)
insert into a
select 1, 1 union all
select 1, 2 union all
select 1, 3 union all
select 2, 2 union all
select 3, 2 union all
select 4, 2
--期望结果
--A1 = 3 A2 = 4
--A3 = 3/4 = 0
select A3=(select count(1) from a where Flag=1)/(select count(1) from a where Type=2)
/*
A3
-----------
0
(1 行受影响)
*/
select A3=(select count(1) from a where Flag=1)%(select count(1) from a where Type=2)
/*
A3
-----------
3
(1 行受影响)
*/
Select case Flag When 1 Then Count(OrgID) End case as A1/Case Type When 2 Then Count(OrgID) End case As A2 From a
select A3=(select count(1) from a where Flag=1)/(select count(1) from a where Type=2) from a