SQL - 由人员指标计算的月数

时间:2016-04-21 16:46:10

标签: sql sql-server vertica

我正在尝试根据ID计算已过去的月数,对于某些记录,每次月份不会增加1(即有人可能有1/1/13和{的记录{1}}但不是3/1/13)但是我只想要计算表格中的记录。因此缺少几个月并不重要。

示例表将是:(注意缺少的月份和它的不相关性。)

2/1/13

基本上是SQL中的Excel DATE ID Months Passed ----------- --- -------------- 2013-11-01 105 1 2013-12-01 105 2 2014-02-01 105 3 2014-03-01 105 4 ,我写过:

COUNTIFS

有没有人知道使用SQL生成所需列的方法?

2 个答案:

答案 0 :(得分:2)

尝试ROW_NUMBER()。如果您只希望“每月通过”列每次增加1,并且对于每个ID,那将完成这一操作。

SELECT
Date,
Id,
Indicator,
ROW_NUMBER() OVER(PARTITION BY Id ORDER BY Date) AS RowNum
FROM YourTable
WHERE Indicator = 'YES'

UNION

SELECT
Date,
Id,
Indicator,
0 AS RowNum
FROM YourTable
WHERE Indicator = 'NO'

答案 1 :(得分:0)

您可以更简单地计算按月分组的行数(如果您分别在不同年份计算月数,则更复杂):

SELECT COUNT(derived.monthVal) 
FROM (SELECT MONTH(<your date field>) AS monthVal 
      FROM [your table] 
      WHERE [Your ID Column] = <the id>
      GROUP BY MONTH(<your date field>)) AS derived;