簡體   English   中英

SQL查詢以計數不同的記錄並在1行中打印

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM