我的示例代码是这样的:
select count(*) cnt
from
(
select title,person,first_value,second_value,third_value
from
(
select a.title,b.person,b.id_meta b_meta,b.value
from tbl_one a
inner join tbl_param b on a.param=b.id
where b.id in ('first_value','second_value','third_value')
) x
pivot
(
sum(value)
for param in ([first_value],[second_value],[third_value])
) pvt
) r
inner join tbl_two c on r.person=c.person
inner join tbl_person p on r.person=p.id
group by p.title,r.first_value,r.second_value,r.third_value
这段代码没有计数,我从这段代码中取了一个空字符串,当我计算这个查询时我想得到0但是它只显示一个空字符串。为什么它给我空而不是0?
答案 0 :(得分:2)
COUNT()
永远不会返回NULL
,也不会返回字符串值。所以,你的问题有点可疑。
我认为问题略有不同 - 您的查询根本不返回任何行。然后,当你去查看COUNT()
时,它将被返回为NULL
(特别是如果你将它用作标量子查询),因为该行不存在。
如果您有GROUP BY
子句,就会发生这种情况。如果过滤掉所有行,则不返回任何行。
我建议你删除GROUP BY
子句并计算返回的行数。我怀疑其值为0
。