使用Group by查询指定结果的MySQL

使用Group by查询指定结果的MySQL,mysql,sql,Mysql,Sql,我需要编写一个查询,在GROUPBY查询之后返回一行。例如,我有一个带有列的表tblTest: Id, Name, Type, Amount 1, Receipt, Cash 100 2, Receipt, Card 200 3, Receipt, Cheque 250 4, Receipt, Card 150 5, Receipt, Cash 100 6, Payment, Cash 300 7, Payment, Cheque 400 按查询分组后 Select

我需要编写一个查询,在GROUPBY查询之后返回一行。例如,我有一个带有列的表tblTest:

Id, Name,   Type,  Amount
1, Receipt, Cash   100
2, Receipt, Card   200
3, Receipt, Cheque 250
4, Receipt, Card   150
5, Receipt, Cash   100
6, Payment, Cash   300
7, Payment, Cheque 400
按查询分组后

Select Name,Type,Amount from tblTest where 1=1 Group by Type
它还给了我

1 Receipt  Cash   200
2 Receipt  Card   350
3 Receipt  Cheque 250
4 Payment, Cash   300
5 Payment, Cheque 400
但我需要回报的是

Name    Cash Card Cheque
Receipt 200  350  250
Payment 300  NULL 400

提前感谢。

您只需要一个基本的pivot查询和一个总和:

SELECT
    Name,
    SUM(CASE WHEN Type = 'Cash'   THEN Amount ELSE 0 END) Cash,
    SUM(CASE WHEN Type = 'Card'   THEN Amount ELSE 0 END) Card,
    SUM(CASE WHEN Type = 'Cheque' THEN Amount ELSE 0 END) Cheque
FROM tblTest
GROUP BY
    Name;

认真考虑应用程序代码中的数据显示问题,谢谢您的回答@ Tim Biegeleisen,如果在上述数据中没有现金、卡、支票,请再修改一次。这可能是动态的,那么我如何管理它?@Vijay您需要编写一些动态SQL来处理此问题。您可以帮助我构建动态查询吗?如果您确实需要此问题,您应该问一个新问题。现在更改您的要求将使整个问题无效。@Tim Biegeleisen请在