Sql 除以返回的子查询';子查询返回的值超过1个;错误
我有下表,其中我有两个销售订单,每个销售订单有不同数量的交易 销售订单 交易 数量 S1 T1 20 S1 T2 20 S2 T1 15 S2 T2 15 S2 T3 15Sql 除以返回的子查询';子查询返回的值超过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
因为在子查询中,您按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;