[英]transact-sql question
假设tableA中有100条记录,并且tableA包含名为“ price”的列。
如果价格总和>一定数量(例如1000)而不使用光标,该如何选择前n条记录?
谢谢
前N个代表某种您未提供的订单,因此我假定了任何随机订单。
您可以在ROW_NUMBER()的OVER子句中更改此设置。
尝试类似
DECLARE @Table TABLE(
Price FLOAT
)
INSERT INTO @Table SELECT 1
INSERT INTO @Table SELECT 11
INSERT INTO @Table SELECT 12
INSERT INTO @Table SELECT 15
INSERT INTO @Table SELECT 10
INSERT INTO @Table SELECT 65
INSERT INTO @Table SELECT 100
DECLARE @TotalPrice FLOAT
SELECT @TotalPrice = 100
;WITH Vals AS (
SELECT *,
ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) RNR
FROM @Table
)
, Totals AS (
SELECT v.RNR,
SUM(vP.Price) TotalPrice
FROM Vals v LEFT JOIN
Vals vP ON v.RNR >= vP.RNR
GROUP BY v.RNR
)
, LimitValue AS (
SELECT TOP 1
RNR
FROM Totals
WHERE TotalPrice >= @TotalPrice
ORDER BY RNR
)
SELECT *
FROM Vals
WHERE RNR <= (
SELECT RNR
FROM LimitValue
)
从表A中选择价格,其中价格> 1000个限制n;
n-不。 您想要在结果集中的记录数
-干杯
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.