我有这张桌子:
date client category
-------------------------------------
2016-05-20 harrys bar
2016-05-20 pitchers bar
2016-05-20 eagle sport
2016-05-21 claire other
2016-05-21 maximus other
2016-05-24 eagle sport
2016-05-24 dolphin sport
现在的结果是:
date client category
-------------------------------------
2016-05-20 harrys bar (two rows)
2016-05-20 eagle sport
2016-05-21 claire other (two rows)
2016-05-24 eagle sport (two rows)
因为我将列类别分组,但我希望结果为:
date client category
-------------------------------------
2016-05-20 harrys bar (two rows)
2016-05-20 eagle sport
2016-05-21 claire other
2016-05-21 maximus other
2016-05-24 eagle sport
2016-05-24 dolphin sport
所以当日期和类别'bar'匹配时,我希望它们分组。但是,当日期匹配时,我不希望类别“运动”或“其他”分组。
我试过锁定CASE-WHEN-THEN-ELSE
等等。但我只是不知道如何编写sql语句。
我试过像
这样的东西SELECT *
FROM events
GROUP BY
CASE
WHEN category = "bar" THEN category ELSE ""
END
给我:
date client category
-------------------------------------
2016-05-20 harrys bar
2016-05-20 eagle sport
我也试过
WHEN category = "bar" THEN date, category ELSE ""
但它根本不起作用..
你可以看到我不知道如何使用CASE
...所以有任何建议吗?
我试图在stackoverflow上阅读这么多问题,还有SQL语句的手册等等。我只是不明白如何使用它。
答案 0 :(得分:6)
您可以使用UNION ALL
:
SELECT category, date, client
FROM events
WHERE category <> 'bar'
UNION ALL
SELECT category, date, MIN(client) AS client
FROM events
WHERE category = 'bar'
GROUP BY category, date;
的 LiveDemo
强>