[英]SQL query to count different records and print in 1 row
我有下表,我正在尋找一個SQL查詢,該查詢計算每個名稱的獎勵,並打印獲得特定獎勵類型的最后日期。
這是我的桌子:
NAME | REWARD | DATE
----------+-------------+------------
Chris | small | 18.05.2014
Chris | small | 27.08.2015
Chris | big | 01.07.2014
Tom | big | 10.10.2016
Tom | big | 30.11.2017
結果應如下所示:
NAME | BIG_REWARDS | SMALL_REWARDS | LAST_BIG_REWARD | LAST_SMALL_REWARD
----------+-------------+---------------+-----------------+-------------------
Chris | 1 | 2 | 01.07.2014 | 27.08.2015
Tom | 2 | 0 | 30.11.2017 |
我正在使用Firebird
您可以使用條件聚合:
SELECT name,
SUM(CASE WHEN reward = 'big' THEN 1 ELSE 0 END) AS BIG_REWARDS,
SUM(CASE WHEN reward = 'small' THEN 1 ELSE 0 END) AS SMALL_REWARDS,
MAX(CASE WHEN reward = 'big' THEN "DATE" END) AS LAST_BIG_REWARD,
MAX(CASE WHEN reward = 'small' THEN "DATE" END) AS LAST_SMALL_REWARD
FROM tab
GROUP BY name;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.