SELECT COUNT(Type) from House where Type = 1
SELECT COUNT(Type) from House where Type = 2
SELECT COUNT(Type) from House where Type = 3
我的问题是:我想参加以上3条语句获得:3列,即如: ColumnType1: '50',ColumnType2: '60',columnType3:“ 45'加入select语句得到的SQL列
感谢
SELECT COUNT(Type) from House where Type = 1
SELECT COUNT(Type) from House where Type = 2
SELECT COUNT(Type) from House where Type = 3
我的问题是:我想参加以上3条语句获得:3列,即如: ColumnType1: '50',ColumnType2: '60',columnType3:“ 45'加入select语句得到的SQL列
感谢
您可以使用一个聚合F中的列结了CASE
表达:
SELECT
count(case when Type = 1 then Type end) as type_1,
count(case when Type = 2 then Type end) as type_2,
count(case when Type = 3 then Type end) as type_3
from House
您可以使用case
加起来如果Type
比赛
SELECT sum(case when Type = 1 then 1 else 0 end) as type_1,
sum(case when Type = 2 then 1 else 0 end) as type_2,
sum(case when Type = 3 then 1 else 0 end) as type_3
from House
SELECT
COUNT(Type) as val1,
(SELECT COUNT(Type) from House where Type = 2) as val2,
(SELECT COUNT(Type) from House where Type = 3) as val3
from House where Type = 1
有一种清洁型SQL的,可以给你这个答案,但你必须在不同的行中的每个类型:
SELECT Type, COUNT(Type) FROM House GROUP BY Type
它按照您的要求不给您列的缺点;但优点是它适用于任何数量的不同类型,而无需更改查询。
嗨,我需要你的帮助。我创建了一个[动态查询](http://www.sqlfiddle.com/#!2/10bc2/17),它工作正常。但是当动态值有一个*空格*时(例如* channel *'unknown 01'在这个例子中,它[不起作用](http://www.sqlfiddle.com/#!2/6ff09/1) )。任何解决方案 – hims056 2013-04-29 13:29:55
@ hims056你最好用反引号包装列名 - http://www.sqlfiddle.com/#!2/6ff09/2 – Taryn 2013-04-29 14:16:53