我正在尝试编写一个SQL查询,如果没有针对指定条件的行,该查询可以将值显示为0
到目前为止,我已经尝试了以下方法,但似乎无济于事
coalesce(count(m.a),'0')
isnull(count(m.a),'0')
case when count(*) > 0 then count(*) else '0' end
select M.a, m.b, m.c, m.d, m.e,
--coalesce(count(m.a),'0') as CountOfRecords
--isnull(count(m.a),'0') as CountOfRecords
--case when count(*) > 0 then count(*) else '0' end
from my_table M
left join
(select a, b,c,d,e
from my_table
group by a, b,c,d,e
having count(*) >1 ) B
on M.b = B.b
and M.c = B.c
and M.d = B.d
and M.e = B.e
and m.a <> B.a
where M.a in (1,2)
and M.date<= '1/1/2019'
group by M.a, m.b, m.c, m.d, m.e
预期结果
A B C D E count
1 1 1 1 1 10
2 2 2 2 2 0
实际结果
A B C D E count
1 1 1 1 1 10
答案 0 :(得分:0)
您需要使用嵌套请求:
public IList<xxAnswer> answers { get; set; }
答案 1 :(得分:0)
您是否正在寻找类似的东西?
select a, b, c, d, e,
sum(case when M.date <= '2019-01-01' then 1 else 0 end) as cnt
from my_table
where a in (1, 2)
group by a, b, c, d, e;
这将使原始数据中的所有行都与a
上的条件匹配,但不一定与日期上的条件匹配。然后,它仅计算与日期匹配的行。