-4

Appidカウントの順序を月ごとおよび年ごとに見つけるためのSQLステートメントを手伝ってくれますが、既存の月と年のappidはカウントしません

column name     TYPE   
ID          int 
AppID           int 
Month           int 
Year            int 

Records
ID Appid Month Year
207 396 Jan 2013
250 396 Feb 2013
283 396 Mar 2013
319 396 Apr 2013
365 396 May 2013
221 451 Feb 2013
262 451 Mar 2013
293 451 Apr 2013
329 451 May 2013
384 451 June 2013
354 609 May 2013
394 702 June 2013
353 707 May 2013

以下のように出力したいのですが、

Month      count
January     1
February    1
March       0
April       0
May         2
June        1

たとえば、appid = 396 の場合、2 月の値のみが 1 であるすべての appid の最小月レコード数のみを表示したい

4

2 に答える 2

3

Appidそれぞれの最初の月だけを数えたいと思います。したがって、SQL Server 2005 以降を想定すると、次のようになります。

;WITH CTE AS
(
    SELECT  *,
            RN=ROW_NUMBER() OVER(PARTITION BY Appid ORDER BY ID)
    FROM YourTable
)

SELECT  A.[Year],
        A.[Month],
        COUNT(B.ID)
FROM (  SELECT DISTINCT [Year], [Month]
        FROM YourTable) A
LEFT JOIN ( SELECT *
            FROM CTE
            WHERE RN = 1) B
    ON A.[Year] = B.[Year] 
    AND A.[Month] = B.[Month]
GROUP BY A.[Year],
         A.[Month]
于 2013-06-19T20:03:34.030 に答える