如何在postgresql中构建此查询

时间:2017-07-06 05:30:52

标签: postgresql

enter image description here

假设我有这些数据。如何以一种有效的方式对此进行查询。它将所有OUT的数量加上每个项目的IN减去。

enter image description here

3 个答案:

答案 0 :(得分:3)

尝试此查询:

select
    "Desc",
    sum(case when Type = 'out' then Qty else 0 end) -
    sum(case when Type = 'in'  then Qty else 0 end)
from yourTable
group by "Desc"
    Desc

请注意,DESC是保留关键字,您不应使用它来命名数据库,表或列。我认为你必须用双引号来转义它以使查询运行。

答案 1 :(得分:1)

select desc, sum(case Type when 'out' then Qty else -Qty end) from test group by desc;

这会更快。

答案 2 :(得分:0)

SELECT Description, SUM(Case WHEN rowtype = 'in' then 1 else -1 end * Qty) as rowqty FROM yourtable GROUP BY description

请注意,使用保留字作为列名称并不是一个好主意。 DESC和TYPE正在寻找麻烦!