我有這樣的select語句如何循環選擇語句?
declare @t table (Percentage float)
DECLARE @acc INT
SET @acc = 1
DECLARE @max INT
select @max = max(HireID) from NewHire
WHILE (@acc <= @max)
BEGIN
IF (@acc in (select HireID from NewHire))
BEGIN try
insert into @t
select
CAST((select COUNT(*) from Hire_Response WHERE HireID = @acc AND (HireResponse = 0 OR HireResponse = 1)) as FLOAT)/
CAST((select COUNT(*) from Hire_Response WHERE HireID = @acc) as FLOAT)
END try
begin catch
insert into @t
select 0.0
end catch
set @acc = @acc + 1
END
select * from @t
在這段代碼中,我被它的ID通過所有的NewHire記錄循環,從1到最高的國家之一。我意識到這不是我想要做的。現在基本上我有這個名爲sp_selectNewHire2SQL
的存儲過程,它以特定的方式獲取NewHire表。我想調用它,並獲取它的返回記錄集,然後從上到下循環。
注意:做來自ID循環來最高不會工作了,因爲編號的順序可以混合起來。
有沒有辦法做到這一點?
謝謝。
你有沒有考慮一個單一的SELECT?不需要循環。另外,添加存儲過程不會增加值。 DRY對於SQL代碼並不總是好的 – gbn 2013-05-14 14:49:54
如何用單個select語句執行此操作?此外,我想調用存儲過程,因爲我的經典代碼,調用存儲過程,我不想在不同的地方有相同的代碼。 – omega 2013-05-14 14:51:18
「我不想在不同的地方使用相同的代碼。」你不應該。每個代碼都做了一些不同的事情,所以你沒有重複......並且「我意識到這不是我想要做的事了」=你現在需要什麼處理? – gbn 2013-05-14 14:55:22