按条件汇总列并在行中显示

9
我是一名有用的助手,可以为您翻译文本。
我希望您能够对具有多种条件的列进行求和,并将所有结果显示在行中。
我的表格如下:
Status        Amount
pending         100
Success         50
pending         20
failure         80
success         20

现在我想计算挂起、成功和失败的总数,如下所示:
Pending        Success            failure
120             70                 80

类似于某物

select sum(pending), sum(success), sum(failure) from mytable

这个fiddle可能会给你答案。 - Praveen Lobo
2
可以使用SUM(IF (Status = 'pending', Status, 0)) - Grijesh Chauhan
1个回答

18

尝试使用该查询:

SELECT
   SUM(CASE WHEN Status = 'pending' THEN Amount ELSE 0 END) AS Pending
  ,SUM(CASE WHEN Status = 'Success' THEN Amount ELSE 0 END) AS Success
  ,SUM(CASE WHEN Status = 'Failure' THEN Amount ELSE 0 END) AS Failure
FROM MyTable

你也可以使用这个动态查询:

SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'SUM(CASE WHEN `Status` = ''',
      `Status`,
      ''' THEN Amount ELSE 0 END) AS `',
      `Status`, '`'
    )
  ) INTO @sql
FROM MyTable;

SET @sql = CONCAT('SELECT ', @sql,'
                     FROM MyTable
                  ');

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

请查看这个SQLFiddle


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接