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

ピボットされた列の値を合計して別のピボットされた列に追加する方法

    合計列フィールドを計算する必要があります。つまり、ピボット列のリストにありません。

    データ

    create table #CheckInCheckOut(Id int identity(1,1),UserId_Fk int,CountHours varchar(50),[Day] varchar(50))
    INSERT INTO #CheckInCheckOut(UserId_Fk,CountHours,[Day]) VALUES
    (1,'2','Sunday'),(1,'2','Monday'),(1,'2','Tuesday'),(1,'2','Wednesday'),(1,'2','Thursday'),(1,'2','Friday'),(1,'2','Saturday')
    ,(2,'3','Sunday'),(2,'3','Monday'),(2,'3','Tuesday'),(2,'3','Wednesday'),(2,'3','Thursday'),(2,'3','Friday'),(2,'3','Saturday')
    ,(3,'3','Sunday'),(3,'3','Monday'),(3,'3','Tuesday'),(3,'3','Wednesday'),(3,'3','Thursday'),(3,'3','Friday'),(3,'3','Saturday')
    
    
    create table #Users(UserId int identity(1,1),FullName varchar(50))
    INSERT #Users(FullName) values('Abdul'),('khan'),('Tariq')
    

    合計も検索するクエリ:

    select FullName
    ,[Sunday] = SUM([Sunday])
    ,[Monday] = SUM([Monday])
    ,[Tuesday] = SUM([Tuesday])
    ,[Wednesday] = SUM([Wednesday])
    ,[Thursday] = SUM([Thursday])
    ,[Friday] = SUM([Friday])
    ,[Saturday] = SUM([Saturday])
    , Total= SUM([Sunday]+[Monday]+[Tuesday]+[Wednesday]+[Thursday]+[Friday]+[Saturday])
       from  
       (Select UserId_Fk,ISNULL(CAST(CountHours as decimal(18,2)),0)as CountHours,[Day] 
       from #CheckInCheckOut)
        as convertedtable
        inner join #Users
        on convertedtable.UserId_Fk=#Users.UserId
     PIVOT
    (
     SUM(CountHours) 
     FOR Day
     IN([Sunday],[Monday],[Tuesday],[Wednesday],[Thursday],[Friday],[Saturday])
    )
    as PivotTable
    GROUP BY FullName
    

    出力

    また、水平方向と垂直方向の両方の合計が必要な場合は、次を置き換えます:

     --GROUP BY FullName
    GROUP BY ROLLUP(FullName);
    

    詳細については、リンク https://stackoverflow.com/a/17142530/1915855 を参照してください。

    DROP TABLE #CheckInCheckOut
    DROP TABLE #Users
    


    1. WordPressプラグインで新しいページを作成するにはどうすればよいですか?

    2. テストファイルを作成できません下位テスト開始サーバーmysql

    3. この種のSQLインジェクションの目的は何ですか?

    4. Oracle10gFormsを使用して電子メールを送信する方法