0

我有一张包含以下列的表格

id = 例如 1,2,3,4,5,6...

状态 = 例如可用/不可用

cityName = 例如 = 艾哈迈达巴德

我写了下面的查询并得到了我需要的输出,但我想要一些不同的格式

SELECT count(id) as 'Count', status, cityName  FROM table_name
    WHERE cityName like 'Ahmedabad'
    GROUP BY status ;

输出 : -

----------------------
Count|status|cityname
----------------------
100|Available|Ahmeadabad

200|Not Available|Ahmeadabad

我想要的输出:-

--------------------------------
Available|Not Available|cityname
--------------------------------
100|200|Ahmeadabad
4

2 回答 2

1
SELECT
SUM(IF(status = 'Available', 1, 0)) AS `Available`,
SUM(IF(status = 'Not Available', 1, 0)) AS `Not_Available`,
cityName
FROM
table_name
GROUP BY cityName

请询问有关查询是否有任何不清楚的地方。

或者,如果您只想要那个城市,您可以省略 GROUP BY

SELECT
SUM(IF(status = 'Available', 1, 0)) AS `Available`,
SUM(IF(status = 'Not Available', 1, 0)) AS `Not_Available`,
cityName
FROM
table_name
WHERE cityName = 'Ahmeadabad'
于 2012-09-07T11:51:23.737 回答
0

一种通用的方法是使用 SUM(CASE WHEN...)

SELECT 
SUM(CASE WHEN Status = 'Available' then 1 else 0 end) AS `Available`, 
SUM(CASE WHEN Status = 'Not Available' then 1, 0 end) AS `Not_Available`, 
cityName 
FROM 
table_name 
GROUP BY cityName 
于 2012-09-07T12:16:25.140 回答