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)
我有一个包含两个 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)