2016-10-20 77 views
0

我嘗試運行一個區域的每個郵政編碼的查詢,例如 我有n個郵政編碼,我必須運行查詢每一個,我嘗試做一個變量和一個選擇,但隨着這個錯誤,我可以改變郵政編碼,每次運行它,但約300郵政編碼,所以我會花一整天它。Msg 512,Level 16,State 1,Line 3 Subquery返回的值超過1

這是我的查詢

----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 <>' ') 

[email protected]='85001'---If I do this way I have to run for every zipcode 

的一部分,我跑我的查詢依賴的價值@ ZIP1 其每次我與SELECT子句

任何線索運行時間給我的錯誤?

+1

的信息是很清楚的。子查詢返回多行。 –

+1

您沒有爲@ Zip1獲取單個值,但SQL-Server只需要一行。 – Nebi

+0

是的,但我需要運行每個郵政編碼,我不想手動執行它? – Luis64

回答

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 
+0

在查詢中不起作用 – Luis64

+0

消息137,級別16,狀態1,行59 必須聲明標量變量「@ Zip1」。 – Luis64

+0

Nebi ,,它的作品謝謝...... :) – Luis64

相關問題