0

特定の週にオープンおよびクローズされた問題の数をユーザーごとに表示するレポートをヘルプ デスクから取得しようとしています。

週は、クエリが送信された日付によって決定されます。

その週の ID の数をカウントするだけなので、開いている問題の数を定義するのは簡単です。

問題は、オープン日までにこれを行っているため、同じ期間にクローズされた問題の数を計算する方法がわからないことです.

データの例は次のとおりです。

    ID  | Open Date  | Closed Date
    1   | 01/01/2013 | 01/01/2013
    2   | 05/01/2013 | 05/01/2013
    3   | 05/01/2013 | 10/01/2013
    4   | 10/01/2013 | 10/01/2013
    5   | 15/01/2013 |

この例では、レポートに次のように表示します。

  Week | Opened | Closed
  1    | 3      | 2
  2    | 1      | 2
  3    | 1      | 0

これはよくある質問だと思いますが、一日中検索しましたが、解決策が見つかりません。

SSRS 2008 R2 を使用しています。

ありがとう、

フィル

4

1 に答える 1

2

DATEPART年の週番号を取得するために使用できます。

更新しました

Conrad Fix がコメントで述べたように、結果セットに年を追加する必要があります。

SELECT  ISNULL(A.[Year],B.[Year]) [Year],
        ISNULL(A.[Week],B.[Week]) [Week],
        ISNULL(A.Opened,0) Opened,
        ISNULL(B.Closed,0) Closed
FROM (  SELECT  YEAR(OpenDate) [Year],
                DATEPART(WEEK,OpenDate) [Week],
                COUNT(*) Opened
        FROM YourTable 
        WHERE [OpenDate] IS NOT NULL
        GROUP BY YEAR(OpenDate), DATEPART(WEEK,OpenDate)) A
FULL JOIN ( SELECT  YEAR(ClosedDate) [Year],
                    DATEPART(WEEK,ClosedDate) [Week],
                    COUNT(*) Closed
            FROM YourTable 
            WHERE [ClosedDate] IS NOT NULL
            GROUP BY YEAR(ClosedDate), DATEPART(WEEK,ClosedDate)) B
    ON A.[Year] = B.[Year] AND A.[Week] = B.[Week]
ORDER BY [Year], [Week]

結果:

╔══════╦══════╦════════╦════════╗
║ Year ║ Week ║ Opened ║ Closed ║
╠══════╬══════╬════════╬════════╣
║ 2013 ║    1 ║      3 ║      2 ║
║ 2013 ║    2 ║      1 ║      2 ║
║ 2013 ║    3 ║      1 ║      0 ║
╚══════╩══════╩════════╩════════╝

そして、これがデモ付きのsqlfiddleです。

于 2013-06-17T18:10:14.047 に答える