Sql 除以返回的子查询';子查询返回的值超过1个;错误

Sql 除以返回的子查询';子查询返回的值超过1个;错误,sql,sql-server,tsql,subquery,division,Sql,Sql Server,Tsql,Subquery,Division,我有下表,其中我有两个销售订单,每个销售订单有不同数量的交易 销售订单 交易 数量 S1 T1 20 S1 T2 20 S2 T1 15 S2 T2 15 S2 T3 15 因为在子查询中,您按SalesOrder对进行分组它会为每个SalesOrder返回一行 但是您需要特定销售订单的交易数量 使用MAX()和COUNT()窗口函数: SELECT DISTINCT SalesOrder, Transaction, MAX(Amount) OVER (PARTITION BY

我有下表,其中我有两个销售订单,每个销售订单有不同数量的交易

销售订单 交易 数量 S1 T1 20 S1 T2 20 S2 T1 15 S2 T2 15 S2 T3 15
因为在子查询中,您按SalesOrder对
进行分组
它会为每个
SalesOrder
返回一行 但是您需要特定
销售订单的交易数量

使用MAX()和COUNT()窗口函数:

SELECT DISTINCT SalesOrder, Transaction, 
       MAX(Amount) OVER (PARTITION BY SalesOrder, Transaction) / 
       COUNT(*) OVER (PARTITION BY SalesOrder)
FROM Test_Table
SELECT SalesOrder, Transaction,
       Amount) / COUNT(*) OVER (PARTITION BY salesorder)
FROM Test_Table;
如果列
Amount
的数据类型为整数,则SQL Server将执行整数除法,因此您可能需要先乘以
1.0
,以便得到正确的小数位结果:

SELECT DISTINCT SalesOrder, Transaction, 
       1.0 * MAX(Amount) OVER (PARTITION BY SalesOrder, Transaction) / 
       COUNT(*) OVER (PARTITION BY SalesOrder)
FROM Test_Table 
试试这个

SELECT SaleOrder, [Transaction]
    , Max(Amount) / COUNT([Transaction]) over (partition by SaleOrder)
FROM Test_Table GROUP BY SaleOrder,[Transaction]

我认为您不需要分组方式,只需要窗口功能:

SELECT DISTINCT SalesOrder, Transaction, 
       MAX(Amount) OVER (PARTITION BY SalesOrder, Transaction) / 
       COUNT(*) OVER (PARTITION BY SalesOrder)
FROM Test_Table
SELECT SalesOrder, Transaction,
       Amount) / COUNT(*) OVER (PARTITION BY salesorder)
FROM Test_Table;