我有这个选择声明。我知道我可以通过联盟解决这个问题,但我被告知效率不高,而且我的老板要求我在单个查询中进行,而不是使用Union,因为它是同一个表。这是有道理的。
select
'No Photos' as 'Type',
SUM( case when Cntimagedata < 12 or cntimagedata is null then 1 else 0 end) as Value,
'Incomplete Photos' as 'Type',
SUM( case when Cntimagedata < 12 then 1 else 0 end) as Value
from tablemain
查询生成以下表格。
&#39;类型&#39; | &#39;值&#39; | &#39;类型&#39; | &#39;值&#39;
没有照片| 15 |不完整的照片| 3
但我的回答必须是
&#39;类型&#39; ----------------- | ----&#39;价值&#39;
没有照片------------ | 15
不完整的照片 - | 3
只有2列而不是4 ...这可能吗?我一直试图让这个解决方案起作用。并且加入不适合这个(我认为),因为我需要的所有数据都在这个单独的表中。
我之前提到过,我无法使用Union,因为我的老板说我的查询速度较慢。
答案 0 :(得分:1)
SELECT 'No Photos' as 'Type', SUM( case when Cntimagedata < 12 or cntimagedata is null then 1 else 0 end) as Value
FROM tablemain
UNION SELECT 'Incomplete Photos' as 'Type', SUM( case when Cntimagedata < 12 then 1 else 0 end) as Value
FROM tablemain
或者因为您现在可以将条件放在where子句
中SELECT 'No Photos' as 'Type', count(cntimagedata) Value
FROM tablemain where Cntimagedata < 12 or cntimagedata is null
UNION SELECT 'Incomplete Photos' as 'Type', count(cntimagedata) Value
FROM tablemain where Cntimagedata < 12