Transact-SQL вопрос - PullRequest
       3

Transact-SQL вопрос

1 голос
/ 14 октября 2010

Предположим, что в таблице A было 100 записей, а таблица A содержала столбец с именем 'price'.

Как выбрать первую запись n, если где сумма цены> определенная сумма (например, 1000) без использования курсора?

спасибо

Ответы [ 2 ]

1 голос
/ 14 октября 2010

Верх N означает какой-то заказ, который вы не поставили, поэтому я принял любой случайный заказ.

Вы можете изменить это в предложении OVER ROW_NUMBER () .

Попробуйте что-то вроде

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
                )
0 голосов
/ 14 октября 2010

выберите цену из таблицы A, где цена> 1000 предел n;

n - нет.записей, которые вы хотите в наборе результатов

- Приветствия

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...