查询以获取日期计数

时间:2011-04-18 11:05:09

标签: sql oracle9i

假设我有3组记录

key1    start_date1     start_date2    start_date3
701 08-SEP-2009 08-DEC-2009    08-jan-2010
701 08-JUN-2013 08-SEP-2013    08-DEC-2013
701 08-MAR-2017 08-MAR-2018    31-DEC-1899

所以我需要计算更改日期大于14-apr-2011 即对于特定键701,日期计数更改为5

即。对于3组行,大于14-Apr-2011的日期为5个计数 我需要获得一个包含两个字段的表输出

Key1  changedcount
701      5

请帮助我这个..我试着这个超过2天:(

2 个答案:

答案 0 :(得分:0)

您可以尝试以下内容:

SELECT SUM(nb)
  FROM (SELECT COUNT(*) nb FROM your_table WHERE start_date1 > '14-Apr-2011'
        UNION ALL
        SELECT COUNT(*) nb FROM your_table WHERE start_date2 > '14-Apr-2011'
        UNION ALL
        SELECT COUNT(*) nb FROM your_table WHERE start_date3 > '14-Apr-2011')

答案 1 :(得分:0)

SELECT
  key1,
  COUNT(CASE WHEN start_date1 > '14-Apr-2011' THEN 1 ELSE NULL END) +
  COUNT(CASE WHEN start_date2 > '14-Apr-2011' THEN 1 ELSE NULL END) +
  COUNT(CASE WHEN start_date3 > '14-Apr-2011' THEN 1 ELSE NULL END) AS changedcount
GROUP BY key1
FROM atable