假设tableA中有100条记录,tableA包含一个名为“price”的列。
如果价格总和>如何选择前n条记录?一定数量(例如1000)而不使用光标?
感谢
答案 0 :(得分:1)
前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
)
答案 1 :(得分:-1)
从tableA中选择价格 价格&gt; 1000 限制n;
n - 没有。您想要的结果集
中的记录- 干杯