首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在PostgreSQL的group by子句中将一条记录保留在特定的列中,并将其他记录值设为0?

如何在PostgreSQL的group by子句中将一条记录保留在特定的列中,并将其他记录值设为0?
EN

Stack Overflow用户
提问于 2021-04-19 18:46:53
回答 1查看 33关注 0票数 0

我有一组这样的数据

结果应该如下所示

我的问题

代码语言:javascript
复制
SELECT max(pi.pi_serial) AS proforma_invoice_id,
       max(mo.manufacturing_order_master_id) AS manufacturing_order_master_id,
       max(pi.amount_in_local_currency) AS sales_value,
FROM proforma_invoice pi
JOIN schema_order_map som ON pi.pi_serial = som.pi_id
LEFT JOIN manufacturing_order_master mo ON som.mo_id = mo.manufacturing_order_master_id
WHERE to_date(pi.proforma_invoice_date, 'DD/MM/YYYY') BETWEEN to_date('01/03/2021', 'DD/MM/YYYY') AND to_date('19/04/2021', 'DD/MM/YYYY')
  AND pi.pi_serial in (9221,
                       9299)
GROUP BY mo.manufacturing_order_master_id,
         pi.pi_serial
ORDER BY pi.pi_serial
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-20 15:47:48

选项1:在Crystal Reports中创建一个"Running Total“字段,对每个"proforma_invoice_id”只汇总一个"sales_value“。

选项2:向Postgresql查询添加一个helper列,如下所示:

代码语言:javascript
复制
case 
    when row_number() 
         over (partition by proforma_invoice_id 
               order by manufacturing_order_master_id) 
         = 1 
then sales_value 
else 0 
end 
    as sales_value 

我为你准备了一个示例的this SQLFiddle (当然也鼓励你在你的下一个数据库查询相关问题上也这样做:-)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67160537

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档