gpt4 book ai didi

SQL 查询 : transform rows to columns

转载 作者:行者123 更新时间:2023-11-29 12:32:01 25 4
gpt4 key购买 nike

这是我的表格的示例。

enter image description here

我需要执行一个查询,以显示那些在两个月(11 或 12)之一或两个月中费用为 0 的 ID。

因此在示例中,我需要显示 ID 1、3、4 而不是 2,如下面的屏幕截图所示。

enter image description here

我试过下面的查询:

SELECT 
t1.id, t1.month, t1.fee, t2.id, t2.month, t2.fee
FROM
table t1, table t2
WHERE t1.id = t2.id
AND t1.month = '11'
AND t2.month = '12'
AND (t1.fee = 0 OR t2.fee = 0);

但是对于这个查询,我只看到 ID 1,3 而不是 ID 4。我猜这是因为 t1.id = t2.id 但不知道该怎么做。

最佳答案

您可以使用条件聚合。在 Postgres 中,这可以使用 filter 语法:

SELECT t.id,
11 as month,
MAX(t.fee) FILTER (WHERE t.month = 11) as fee_11,
12 as month,
MAX(t.fee) FILTER (WHERE t.month = 12) as fee_12
FROM t
GROUP BY t.id
HAVING MAX(t.fee) FILTER (WHERE t.month = 11) = 0 OR
MAX(t.fee) FILTER (WHERE t.month = 12) = 0;

注意:两个月列是多余的。

关于SQL 查询 : transform rows to columns,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56683867/

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