Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql-具有相关子查询的条件和_Sql_Postgresql - Fatal编程技术网

Postgresql-具有相关子查询的条件和

Postgresql-具有相关子查询的条件和,sql,postgresql,Sql,Postgresql,我想计算一个CASE条件的和,其中一个条件使用一个相关子查询来查找结果,但我仍然坚持使用语法 以下是我迄今为止创建的查询示例,但有错误: 已更新 SELECT t1.account, t1.date SUM(CASE WHEN condition1 THEN t1.amount WHEN condition2 THEN (select sum(t2.amount) from t2 where t2.account = t1.accoun

我想计算一个CASE条件的和,其中一个条件使用一个相关子查询来查找结果,但我仍然坚持使用语法

以下是我迄今为止创建的查询示例,但有错误:

已更新

SELECT t1.account,
       t1.date
       SUM(CASE WHEN condition1 THEN t1.amount
                WHEN condition2 THEN (select sum(t2.amount) from t2 where t2.account = t1.account and t2.date = t1.date)
                ELSE 0 END) as total
FROM t1
GROUP BY t1.account, t1.date
当子查询的输出是多条记录时,上述查询返回错误的结果。简而言之,条件2的结果是总和(t2.金额)*(记录数)

我试图从子查询中删除sum()函数,但由于它可以获取多条记录,所以仍然出现了一个错误

我相信这是可以做到的,但我被卡住了

有人能提出一些建议吗


顺便说一句,我使用的是Postgresql 9.4,您可以先进行聚合。按照措辞,您的查询似乎在尝试这样做:

SELECT t1.account,
       SUM(CASE WHEN condition1 THEN t1.amount
                WHEN condition2 THEN t2.sumamount
                ELSE 0
           END) as total
FROM t1 LEFT JOIN
     (SELECT t2.account, SUM(t2.amount) as t2.sumamount
      FROM t2
      GROUP BY t2.account
     ) t2
     ON t2.account = t1.account
GROUP BY t1.account

谢谢你的帮助。我已经更新了查询,使其更精确地符合我的要求,并用查询的当前行为描述了问题。即使有你的解决方案,我也有同样的结果。我认为这是由于双重聚合,外部和()。有没有其他方法可以避免这种行为?@GiannisDim,因为您无法通过编写查询来表示预期的输出,您需要将数据样本和预期的输出显示为数据。