SQL 变量多次返回相同的结果

SQL variable returning the same result multiple times

我有一个包含两个 select 语句的查询。我需要第二个 select 语句来 return 基于第一个语句的结果。然而,第二个 select 语句 returned 的结果只是第一个 selected 语句的最后结果,重复。

这是我的查询:

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)

如果您 运行 第一个 select 语句就有 270 个结果。我想要完成的是从第二个查询中获得 270 个唯一结果,但我得到的是第一个查询中最后一条记录的结果,重复了 270 次。

谁能帮我找出我做错了什么?

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 值。尝试 select * 或 select table

中的任何列

我想这就是你想要做的

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)