Sql 是否可以将分组的行求和到另一列中,但只显示其中一行的求和结果?

Sql 是否可以将分组的行求和到另一列中,但只显示其中一行的求和结果?,sql,Sql,我有一个查询表,其中包含来自几个用左连接连接的表的数据。到目前为止,一切正常,结果数据是销售订单中的单个项目。我可以将销售订单总值拉入一列,但我只希望该值显示在该订单的一行中,或显示在单独的一行中,以表示整个订单 我的想法是,要么我通过总计,但不知何故,只有在该订单尚未显示时才这样做,要么我使用SUM(),但这似乎只有在与GROUP BY一起使用时才起作用,然后我只显示总计,而不是单个项目 我真的不知道该尝试什么,因为我甚至不知道这是否可行,而且互联网搜索并没有给我任何似乎有用的结果,它们都是关

我有一个查询表,其中包含来自几个用左连接连接的表的数据。到目前为止,一切正常,结果数据是销售订单中的单个项目。我可以将销售订单总值拉入一列,但我只希望该值显示在该订单的一行中,或显示在单独的一行中,以表示整个订单

我的想法是,要么我通过总计,但不知何故,只有在该订单尚未显示时才这样做,要么我使用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”,将具有相同销售订单号的所有项目的“小计”值相加。但我只希望此小计显示每个订单一次(不是针对每个订单项目)


在以下情况下,您可以通过使用窗口函数轻松实现:

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 

创建一个附加行,该行包含

  • 复制查询
  • 按顺序对查询进行分组
  • 对行值列求和
  • 使用联合将此新查询添加到原始查询
  • 在两者中都添加一列,将第一列硬编码为“行”,第二列硬编码为“顺序”
  • 您可以添加总计列

  • 复制查询
  • 按顺序对查询进行分组
  • 对行值列求和
  • 将新查询放在原始查询的from子句中,为其指定一个别名
  • 按订单号加入查询
  • 将新查询的sum列添加到第一个查询的select子句中
  • 或者,您可以使用用例语句仅显示一行

  • 哪个数据库管理系统???SQL只是一种语言。我们添加了一个示例数据表。我目前使用的软件支持用ANSI、Oracle、SQL Server、IBM DB2、MySQL、Sybase、Informix和PostgreSQL方言编写的SQL选择查询。但显然建议使用ANSI SQL方言