消息512,级别16,状态1,行3子查询返回多个值

时间:2016-10-20 15:53:37

标签: sql sql-server tsql

例如,我尝试为区域的每个Zip代码运行一个查询 我有n个邮政编码,我必须为每一个运行查询,我尝试使用变量和选择,但是出现此错误,我可以每次更改邮政编码并运行它,但是大约300个邮政编码,所以我会花一整天的时间。

这是我的查询的一部分

----Declare Variable

Declare @Zip1 as int

Declare @Zip2 as Int

Declare @DistanceMax as numeric

Declare @DistanceMin as Numeric

set @Zip1 = (select  distinct(zip_code)  from zipcode
Where zip_code  <>' ' )

-----@Zip1='85001'---If I do this way I have to run for every zipcode

我根据@ ZIP1的值运行查询 并且每次我使用select子句

运行时都会给出错误

任何线索?

1 个答案:

答案 0 :(得分:0)

正如我们在评论中所说: 您没有为@ Zip1获取单个值,但SQL-Server只需要一行。

解决方法是@Zip1不是int而是表。 假设zip_code是nvarchar:

DECLARE @Zip1 TABLE 
( 
 zipid NVARCHAR(10)
)

INSERT INTO @Zip1
    SELECT distinct zip_code from zipcode
    Where zip_code  <>' '

你可以像任何其他表一样调用@ Zip1:

SELECT zipid FROM @Zip1