Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.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 如何在博士后身上做到这一点?_Postgresql_Postgresql 9.3 - Fatal编程技术网

Postgresql 如何在博士后身上做到这一点?

Postgresql 如何在博士后身上做到这一点?,postgresql,postgresql-9.3,Postgresql,Postgresql 9.3,我有一个这样的桌子结构 id status action amount fid 1 P Yes 3000 10 2 P No 2000 10 3 P Yes 6000 10 4 D Yes 500 10 5 D No 600 10 6 V Yes 800 10 我想用-->状态p操作是、状态D操作否和状态V操作是进行一次筛选。结

我有一个这样的桌子结构

id  status action amount fid
1    P      Yes   3000    10
2    P      No    2000    10
3    P      Yes   6000    10
4    D      Yes   500     10
5    D      No    600     10
6    V      Yes   800     10
我想用-->状态p操作是、状态D操作否和状态V操作是进行一次筛选。结果将基于fid

这样的输出-->


假设您只打算报告上述示例数据中显示的三种状态,我们可以尝试:

SELECT
    fid,
    SUM(amount) FILTER (WHERE status = 'P' AND action = 'Yes') AS amount_1,
    SUM(amount) FILTER (WHERE status = 'D' AND action = 'No')  AS amount_2,
    SUM(amount) FILTER (WHERE status = 'V' AND action = 'Yes') AS amount_3
FROM yourTable
GROUP BY fid;


假设您只想报告上述样本数据中显示的三种状态,我们可以尝试:

SELECT
    fid,
    SUM(amount) FILTER (WHERE status = 'P' AND action = 'Yes') AS amount_1,
    SUM(amount) FILTER (WHERE status = 'D' AND action = 'No')  AS amount_2,
    SUM(amount) FILTER (WHERE status = 'V' AND action = 'Yes') AS amount_3
FROM yourTable
GROUP BY fid;


谢谢你@Tim Biegeleisen。我得到了想要的结果。谢谢你@Tim Biegeleisen。我得到了期望的输出。