2016-09-21 36 views
0

我們有多個變量:變量1,變量2,和Variable3在SQL Server 2012中的一個結果選擇IIF SQL多個條件

如果這些變量中的一個失敗了,我們走出失敗狀態

Declare @Variable1 int 
Set @Variable1 = (select top 1 count(*) 
FROM Table1 
where condition1=1 
group by column1,column2 
having count(1) >1) 

Declare @Variable2 int 
Set @Variable2 = (select top 1 count(*) 
FROM Table1 
where condition2=1 
group by column3,column4 
having count(1) >1) 

Declare @Variable3 int 
Set @Variable3 = (select top 1 count(*) 
FROM Table1 
where condition3=1 
group by column5,column6 
having count(1) >1) 

SELECT IIF (@Variable1 >=1 and Variable2 >=1 and Variable3 >=1, 'Fail', 'Pass') AS ResultTable1; 

的ResultTable1總是得到@ Variable1的結果基地,而不是基於@ Variable2和@ Variable3的結果

任何人都可以幫忙嗎? -Thanks

+1

我認爲你至少應該在查詢中添加一些'ORDER BY'子句(因爲你在所有子查詢中都使用了top)。 –

+0

同意,也可以在比較之前選擇或打印這些變量的值。他們回來了什麼?確保沒有空值。 – paulbarbin

+0

我能夠獲得變量的價值,我不關心訂單。問題是ResultTable1始終在變量1上獲取結果庫,而不是基於變量2和變量3結果 – Anson

回答

0

如果這些變量中的一個失敗了,我們走出失敗狀態

在這種情況下,你需要在你IIF(),不AND使用OR。你現在的方式是,所有的變量都不能失敗。

SELECT IIF (@Variable1 >=1 OR @Variable2 >=1 OR @Variable3 >=1, 'Fail', 'Pass') AS ResultTable1