最近,我正在为一家公司查询数据以形成报告,这是SQL的新手。
我有子器官的原始数据,同时,我还需要计算它的父器官的总量。
我已经使用完整的外部连接将所有器官放在一个表中,添加了一个列"parent_organ“来表示它们之间的关系,如图所示:

我有几次使用下面的SQL查询,但失败了,有人能帮我吗?谢谢。
SELECT ORGAN,
SUM(CASE WHEN parent_organ LIKE '%'||ORGAN||'%' THEN
sales
ELSE 0 END) AS sales_sum
FROM table GROUP BY organ发布于 2016-12-22 11:37:03
我假设是Postgres,使用||连接?从完整的外部联接行集:
SELECT organ, sales FROM test WHERE parent IS NOT NULL
UNION
SELECT a.organ, sum(b.sales)
FROM test a
JOIN test b ON b.parent LIKE '%'||a.organ||'%'
GROUP BY a.organ;这显然不是很好,因为它使您的原始连接变得冗余:它运行两个查询并简单地将结果一起推送。没有完整的外连接和编辑每个查询以从原始源获取数据会更好。
不过,我不认为有更好的方法来处理您所介绍的设置。如果父子关系是一个适当的外键,那么您可能会从原始表中获得GROUPING SETS,但这不适用于您正在进行的字符串匹配。
https://stackoverflow.com/questions/41275030
复制相似问题