我有一个查询表,其中包含来自几个用LEFT JOIN连接的表中的数据。到目前为止,一切正常,结果数据是销售订单中的各个项目。我可以将“总销售订单值”拉到一列中,但是我只希望将其显示在该订单的行之一中,或者显示在单独的行中以代表整个订单。
我的想法是要么我汇总总数,要么以某种方式仅在尚未针对该顺序出现时才这样做,或者我使用SUM(),但这似乎仅与GROUP BY一起使用才有效显示总计而不是单个项目。
我真的不知道该怎么做,因为我什至不知道这样做是否可行,而且互联网搜索并没有给我任何看起来有用的结果,它们全都与分组有关。
SELECT
so."Sales Order#" as 'Sales Order Number',
soi."Sub Total" as 'Sub-Total'
FROM
"Sales Order Items" AS "soi"
LEFT JOIN
"Sales Orders" AS "so" ON so."Sales order ID" = soi."Sales order ID"
我想添加一列“ TCV”,该列求和具有相同销售订单编号的所有项目的“子总计”值。但我只希望此小计每个订单显示一次(而不是针对每个订单商品)。
答案 0 :(得分:1)
您可以通过在案例stmt中使用窗口函数轻松实现此目的:
SELECT
so.SalesOrderNumber as 'Sales Order Number',
CASE WHEN LAG(so.id) OVER (PARITION BY so.salesOrderNumber ORDER BY so.id) IS NULL --this row is first in group, order however you determine "First"
THEN soi.SubTotal
ELSE NULL
END AS subTotal
FROM
"Sales Order Items" AS soi LEFT JOIN
"Sales Orders" AS so ON so.salesOrderId = soi.salesOrderId
答案 1 :(得分:0)
使用总和创建另一行
您可以添加总计列