gpt4 book ai didi

sql - 如何过滤分组查询结果集(SQL)

转载 作者:行者123 更新时间:2023-11-29 14:24:26 26 4
gpt4 key购买 nike

我做过这样的查询:

SELECT Code,       kind,       SUM(valP) AS value FROM transaction WHERE tp = 'N' and date = '20110312' GROUP BY Code,kind ORDER BY Code,kind;

on a database table that give me this resultset :

+------+------+------+
| Code | kind| value|
+------+------+------+
| 1 | TR | 25,99|
| 1 | CT | 22,17|
| 2 | TR | 14,23|
| 3 | DD | 09,67|
| 3 | DD | 23,87|
| 3 | CT | 34,87|
+------+------+------+

code代表交易代码,kind代表支付类型,value代表支付金额。

我只想在结果集中包含包含种类 type = 'CT' 的分组结果,但我还想在同一交易中包含其他付款种类,例如我尝试通过添加必须上层查询:

SELECT Code,       kind,       SUM(valP) AS value FROM transaction WHERE tp = 'N' and date = '20110312' GROUP BY Code,kind HAVING kind = 'CT' ORDER BY Code,kind;

but i obtain something like this :

+------+------+------+
| Code | kind| value|
+------+------+------+
| 1 | CT | 22,17|
| 3 | CT | 34,87|
+------+------+------+

相反,我想检索这样的东西:

+------+------+------+
| Code | kind| value|
+------+------+------+
| 1 | TR | 25,99|
| 1 | CT | 22,17|
| 3 | DD | 09,67|
| 3 | DD | 23,87|
| 3 | CT | 34,87|
+------+------+------+

交易的所有行都包含在类型为 CT 的记录中,有没有办法获得它?

我该怎么做?

我实际上正在使用 SQL Server 2005,但我可能需要在 PostgreSQL 中运行类似的查询。

谢谢

最佳答案

您可以添加条件,告诉“此代码必须与 CT 有一行”sa 做一个子查询:

SELECT Code FROM transaction WHERE kind='CT' GROUP BY Code ;

并为您的第一个查询添加一个过滤器,以仅显示那些在前一个子查询中具有代码的记录:

... AND Code IN (SELECT Code FROM transaction WHERE kind='CT' GROUP BY Code ) ...

这将删除记录代码 2,因为 2 不会出现在第一次查询的结果中

关于sql - 如何过滤分组查询结果集(SQL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5282607/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com