我正在尝试根据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生成所需列的方法?
答案 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;