4

一連の日付を週ごとにグループ化しようとしています。これまでのところ、私は次のものを持っています:

SELECT  DATEPART(week, CONVERT(VARCHAR(50), e.event_date, 107)) AS 'Date' ,
        c.setting_secondary AS 'Workflow Cat' ,
        d.setting_main AS 'Error Type' ,
        SUM(e.event_count) AS 'Total'
FROM    marlin.support_events AS e
        INNER JOIN marlin.support_config AS c
            ON e.event_category = c.setting_code
            AND config_code = 60
        INNER JOIN marlin.support_config AS d
            ON e.event_type = d.setting_code
            AND d.config_code = 70
WHERE   e.event_date BETWEEN DATEADD(MONTH, -2, GETDATE()) AND GETDATE()
        AND c.setting_secondary = 'Expenditure Voucher'
        AND d.setting_main IN ( 'Unstarted' , 'Timeout' )
GROUP BY
        DATEPART(week, CONVERT(VARCHAR(50), e.event_date, 107)) ,
        c.setting_secondary ,
        d.setting_main ,
        e.event_summary

これは私に週番号を表示しますが、その週が始まった日付は表示しません。

ここに画像の説明を入力してください

今週の始まりをどのように表示できますか?

答え:

以下に示す回答と、これを行うために私が見つけた別の方法:

DATEADD(dd, -(DATEPART(dw, e.event_date)-1), e.event_date) 
4

1 に答える 1

4

次のように、日付から年の部分を取得し、最初の月の最初の日を追加してから、を追加し(#week - 1)て、event_date が属する週の開始日を取得できます。

SELECT EventDate, WorkflowCat, ErrorType, SUM(EventCount) AS 'Total'
FROM
(
SELECT  DATEADD(ww, 
           DATEPART(ww, e.event_date) - 1, 
           CONVERT(DATETIME, 
                   CONVERT(VARCHAR(4), DATEPART(yy, e.event_date)) + '-01-01')) AS 'EventDate' ,
        c.setting_secondary AS 'WorkflowCat' ,
        d.setting_main AS 'ErrorType',
        e.event_summary as 'EventSummary'
        e.event_count AS 'EventCount'
FROM    marlin.support_events AS e
        INNER JOIN marlin.support_config AS c
            ON e.event_category = c.setting_code
            AND config_code = 60
        INNER JOIN marlin.support_config AS d
            ON e.event_type = d.setting_code
            AND d.config_code = 70
WHERE   e.event_date BETWEEN DATEADD(MONTH, -2, GETDATE()) AND GETDATE()
        AND c.setting_secondary = 'Expenditure Voucher'
        AND d.setting_main IN ( 'Unstarted' , 'Timeout' )
)
GROUP BY EventDate, WorkflowCat, ErrorType, EventSummary
于 2012-11-09T04:22:34.883 に答える