sql >> データベース >  >> RDS >> Sqlserver

SQLで過去6週間の日曜日の日付までの各週でグループ化するにはどうすればよいですか?

    私はあなたが投稿したデータについていくつかの仮定をしました。

    まず、投稿した値はすべて、その年を2011としています。 ただし、列ヘッダーとしての最終終了日は2011に対応していません 、Sunday 2012の値 そこでデータを変更しました。また、Early ASN 8/15/2011 12:00の最終エントリ 、Late ASNであると思われます それ以外の場合は、合計を一致させます。

    結果を得るには、 PIVOT 関数。この関数を使用すると、値を集計してから列に変換できます。

    SET DATEFIRST 1 -- set this so the start of the week is Sunday
    select InstanceType,
      sum([39]) as Sep_23, 
      sum([38]) as Sep_16, 
      sum([37]) as Sep_09, 
      sum([36]) as Sep_02, 
      sum([35]) as Aug_26, 
      sum([34]) as Aug_19
    from
    (
      select SPGI01_INSTANCE_TYPE_C as InstanceType,
        [39], [38], [37], [36], [35], [34]
      from
      (
        select SPGI01_INSTANCE_TYPE_C,
          DatePart(wk, SPGI01_CREATE_S) WeekNo,
          DATEADD(DAY, 7 -DATEPART(WEEKDAY,SPGI01_CREATE_S),SPGI01_CREATE_S) WeekEnd
        from table1
      ) x
      pivot
      (
        count(WeekEnd)
        for weekno in ([39], [38], [37], [36], [35], [34])
      ) p
    ) x1
    group by InstanceType with rollup
    

    SQL Fiddle withDemo を参照してください。




    1. SQL Server 2008 のスクリプト タスクの SSIS プリコンパイル プロパティはどこにありますか?

    2. Postgresany-clauseをJPA/Hibernateネイティブクエリ(配列パラメータ)で使用する方法

    3. アプリケーションを開始してからしばらくすると、ningx、uwsgi、pythonの永続的なmysqlエラーが発生します

    4. BEGIN-END PL/SQLのブロックアトミックトランザクション