1

私は次のように列にデータを持っています: -

  Process   Volume      TAT
  1            1        Pass
  1            2        Fail
  2            5        Fail
  2            5        Pass
  3            1        Pass
  4            6        Fail
  4            4        Pass

プロセスごとにグループ化すると、ボリュームの合計 (TAT は考慮されません)、TAT = 合格のボリュームの合計、TAT = 不合格のボリュームの合計が必要になります。

このような

Process     Total Volume    Volume(TAT=Pass)    Volume(TAT = Fail)
1           3               1                   2
2           10              5                   5
...
...
4

1 に答える 1

6

SQL Server の場合、次のようCASEに式を使用して、追加する必要がある金額を条件付きで決定し、SUMそれらをまとめて次のように指定できます。

SELECT Process, SUM(Volume) AS TotalVolume, 
    SUM(CASE WHEN TAT = 'Pass' THEN Volume ELSE 0 END) AS Pass,
    SUM(CASE WHEN TAT = 'Fail' THEN Volume ELSE 0 END) AS Fail
FROM (
     -- Dummy data here for testing
    SELECT 1 AS Process, 1 as Volume, 'Pass' AS TAT
    UNION SELECT 1, 2, 'Fail'
    UNION SELECT 2, 5, 'Fail'
    UNION SELECT 2, 5, 'Pass'
    UNION SELECT 3, 1, 'Pass'
    UNION SELECT 4, 6, 'Fail'
    UNION SELECT 4, 4, 'Pass'
) MyTable
GROUP BY Process
ORDER BY Process

Microsoft Access の場合、はサポートされていないため、次のようにまたはCASEを使用できます。SWITCHIIF

SUM(IIF(TAT = 'Pass', Volume, 0)) AS Pass
于 2012-07-30T13:52:56.367 に答える