2015-12-15 7 views
0

У меня есть запрос с двумя операциями select. Мне нужен второй оператор select, чтобы вернуть результат на основе первого оператора. Однако результаты, возвращаемые вторым оператором select, являются только последним результатом первого выбранного оператора, повторяющимся.SQL-переменная, возвращающая один и тот же результат несколько раз

Вот мой запрос:

Declare 
    @Low numeric (13,0) = 50000, 
    @High numeric (13,0) = 60000, 
    @State varchar(2), 
    @Place varchar(5), 
    @Gid2 varchar(7); 

SELECT 
    @State = State, @Place = Place 
FROM 
    [SUB-EST2014_ALL] 
WHERE 
    (NOT(SUMLEV = '50')) AND (NOT(COUNTY = 0)) AND (NOT(PLACE = '99990')) AND (ESTIMATESBASE2010 > @Low) AND (ESTIMATESBASE2010 < @High) 

Set 
    @Gid2 = CONCAT((REPLICATE('0',2-LEN(@State)) + @State),(REPLICATE('0',5-LEN(@Place)) + @Place)) 

SELECT 
    @Gid2 AS Gid2 
From 
    [SUB-EST2014_ALL] 
WHERE 
    (NOT(SUMLEV = '50')) AND (NOT(COUNTY = 0)) AND (NOT(PLACE = '99990')) AND (ESTIMATESBASE2010 > @Low) AND (ESTIMATESBASE2010 < @High) 

Если запустить первый оператор выбора одной только 270 результатов. То, что я пытаюсь выполнить, состоит в том, чтобы получить 270 уникальных результатов из второго запроса, но то, что я получаю, является результатом последней записи в первом запросе, повторяющейся 270 раз.

Может кто-нибудь помочь мне выяснить, что я сделал не так?

ответ

0

я думаю, что это то, что вы пытаетесь сделать

Declare 
    @Low numeric (13,0) = 50000, 
    @High numeric (13,0) = 60000, 
    @Gid2 varchar(7); 

SELECT 
    CONCAT((REPLICATE('0',2-LEN(State)) + State),(REPLICATE('0',5-LEN(Place)) + Place)) Gid2 
FROM 
    [SUB-EST2014_ALL] 
WHERE 
    (NOT(SUMLEV = '50')) AND (NOT(COUNTY = 0)) AND (NOT(PLACE = '99990')) AND (ESTIMATESBASE2010 > @Low) AND (ESTIMATESBASE2010 < @High) 
+0

это точно, что я пытаюсь выполнить. поэтому я пошел на один шаг слишком далеко с двумя операциями select. Я не думал о попытке сделать это за один шаг. Спасибо за помощь. – gacto

0
Set 
@Gid2 = CONCAT((REPLICATE('0',2-LEN(@State)) + @State),(REPLICATE('0',5-LEN(@Place)) + @Place)) 

SELECT 
    @Gid2 AS Gid2 
From 
[SUB-EST2014_ALL] 
WHERE 
(NOT(SUMLEV = '50')) AND (NOT(COUNTY = 0)) AND (NOT(PLACE = '99990')) AND (ESTIMATESBASE2010 > @Low) AND (ESTIMATESBASE2010 < @High) 

, который просто представит значение @ Gid2 для любой записи, возвращенной из запроса. попробуйте выбрать * или выбрать любой столбец из этой таблицы

+0

о цели второго запроса должен возвращать только значение «@ Gid2. проблема в том, что он возвращает только последний результат из первого оператора select. первый оператор select при первом запуске возвращает 270 уникальных записей, поэтому мне нужно, чтобы мой второй оператор select возвращал 270 уникальных значений для '@ Gid2. – gacto

+0

wirting новый ответ –

Смежные вопросы