Конференция "Базы" » Формирование запроса с условием TOP [MSSQL]
 
  • harisma (01.03.08 15:17) [0]
    Господа мастера.
    Есть некоторый набор последовательных запросов, оформленных в виде одного скрипта. Среди этих запросов есть и такой

    SELECT TOP <переменная, вычисленная заранее в этом скрипте> FIELD1, FIELD2  ... FROM TABLE WHERE ....


    Возник вопрос: Как правильно подставить в запрос эту переменную?

    Говорю сразу - вариант типа

    declare @s varchar(...)
    set @s = 'select top ' + @переменная + ' FIELD1, FIELD2 FROM ...'
    exec (@S)


    не предлагать!!!
  • b z (01.03.08 16:09) [1]
    SELECT TOP(<переменная, вычисленная заранее в этом скрипте>) FIELD1, FIELD2  ... FROM TABLE WHERE ....

  • harisma (01.03.08 16:16) [2]
    А ты это пробовал? Так не работает.
  • b z (01.03.08 16:19) [3]
    2005 на ура
    или SET ROWCOUNT <переменная, вычисленная заранее в этом скрипте>
    и не забыть "скинуть" в конце
  • harisma (01.03.08 16:34) [4]
    А в SQL 2000 ругается
    Line 1: Incorrect syntax near '('.

    при коде

    select top(5) RecID from dictionaries_C3AD665D2FD8E140 as D



    то есть даже если явно указывать число в скобках, результата не получится.
  • salexn (01.03.08 18:02) [5]
    попробуй сначала
    SET ROWCOUNT
    потом селект
    затем
    SET ROWCOUNT 0 (чтобы больше не было ограничений)
  • harisma (01.03.08 18:27) [6]

    > попробуй сначала
    > SET ROWCOUNT
    > потом селект

    Так в принципе работает, но для моей задачи не подходит. Дело в том, что этот запрос с условием TOP я хочу использовать в следующей конструкции:

    SELECT ... FROM TABLE_1
    WHERE ... AND (FIELD1 IN (SELECT TOP <Число записей> FIELD1 FROM TABLE_2...)) AND (FIELD2 IN (SELECT TOP <> FIELD2 FROM TABLE_3 WHERE ...))


    Все это должно работать под SQL 2000 и даже SQL 7.0, так что варианты для SQL 2005 не предлагать.
    А может кто имеет что предложить как вообще такой скрипт по другому переписать, чтоб не иметь этих менингитов с TOP?
  • DiamondShark © (03.03.08 17:02) [7]

    > harisma   (01.03.08 18:27) [6]

    выбирай сначала во временные таблицы
 
Конференция "Базы" » Формирование запроса с условием TOP [MSSQL]
Есть новые Нет новых   [134431   +15][b:0][p:0.001]