2011-08-31 56 views
-1

我的查詢如下: 我已經寫入訪問任何人都可以請幫助如何將其轉換爲SQL查詢我得到一個錯誤附近的IIF條件。訪問T-SQL查詢轉換 - 使用什麼來代替IIf()函數?

SELECT #NT_VAR_STEP_1_1.SYS_ID, #NT_VAR_STEP_1_1.NODE, #NT_VAR_STEP_1_1.TEMP_ID, 
     #NT_VAR_STEP_1_1.EQUIP_TYPE, #NT_VAR_STEP_1_1.EQ_ID, 
     #NT_VAR_STEP_1_1.VAR_ID, #NT_VAR_STEP_1_1.NODE AS VAR_SET, 
     #NT_VAR_STEP_1_1.VAR_NAME, IIf([#NT_VAR_STEP_1_1]![VAR_SUBSET]=‘SELF’, 
     [#NT_VAR_STEP_1_1]![NODE],[#NT_VAR_STEP_1_1]![VAR_SUBSET]) AS VAR_SUBSET, 

IIf([#NT_VAR_STEP_1_1]![EQUIP_TYPE]=‘SOURCE’,’PARAMVAR’,’VAR’) AS CALC_VAR_TYPE, 

     #NT_VAR_STEP_1_1.VAR_DATA_TYPE AS DATA_TYPE, #NT_VAR_STEP_1_1.DOF, 
     #NT_VAR_STEP_1_1.RETAIN, #NT_VAR_STEP_1_1.COEFF_OBJECT, 
     #NT_VAR_STEP_1_1.COEFF_VAR_SET, #NT_VAR_STEP_1_1.COEFF_VAR_TYPE, 
     #NT_VAR_STEP_1_1.COEFF_VAR_SUBSET, #NT_VAR_STEP_1_1.COEFF_VAR_NAME, 
     #NT_VAR_STEP_1_1.OPERAND, #NT_VAR_STEP_1_1.SIGN, 
     #NT_VAR_STEP_1_1.VAR_TP_OFFSET, #NT_VAR_STEP_1_1.COEFF_TP_OFFSET, 
     #NT_VAR_STEP_1_1.COEFF_VAR_SUBTYE INTO #OT_VAR_STEP_1_1_1 
FROM #NT_VAR_STEP_1_1 
GROUP BY #NT_VAR_STEP_1_1.SYS_ID, #NT_VAR_STEP_1_1.TEMP_ID, 
     #NT_VAR_STEP_1_1.EQUIP_TYPE, #NT_VAR_STEP_1_1.EQ_ID, 
     #NT_VAR_STEP_1_1.VAR_ID, #NT_VAR_STEP_1_1.NODE, 
     #NT_VAR_STEP_1_1.VAR_NAME, IIf([#NT_VAR_STEP_1_1]![VAR_SUBSET]=‘SELF’, 
     [#NT_VAR_STEP_1_1]![NODE],[#NT_VAR_STEP_1_1]![VAR_SUBSET]), 

     IIf([#NT_VAR_STEP_1_1]![EQUIP_TYPE]=‘SOURCE’,’PARAMVAR’,’VAR’), 

     #NT_VAR_STEP_1_1.VAR_DATA_TYPE, #NT_VAR_STEP_1_1.DOF, 
     #NT_VAR_STEP_1_1.RETAIN, #NT_VAR_STEP_1_1.COEFF_OBJECT, 
     #NT_VAR_STEP_1_1.COEFF_VAR_SET, #NT_VAR_STEP_1_1.COEFF_VAR_TYPE, 
     #NT_VAR_STEP_1_1.COEFF_VAR_SUBSET, #NT_VAR_STEP_1_1.COEFF_VAR_NAME, 
     #NT_VAR_STEP_1_1.OPERAND, #NT_VAR_STEP_1_1.SIGN, 
     #NT_VAR_STEP_1_1.VAR_TP_OFFSET, #NT_VAR_STEP_1_1.COEFF_TP_OFFSET, 
     #NT_VAR_STEP_1_1.COEFF_VAR_SUBTYE, #NT_VAR_STEP_1_1.NODE 
HAVING (((#NT_VAR_STEP_1_1.EQUIP_TYPE)<>‘COST_NODE’)); 
+1

「真實」 SQL(如SQL Server的T-SQL)不知道「IIF」 - 至少現在還沒有。 SQL Server「Denali」(2011?2012?)將爲我們帶來IIF和其他好東西 –

+0

將其轉換爲SQL用於什麼rdbms?如果SQL Server查看'CASE'; http://msdn.microsoft.com/en-us/library/ms181765.aspx –

+0

在這樣一個詳細的查詢中,它有助於發佈**完整的查詢以及您所擁有的特定區域麻煩。 – Yuck

回答

3

轉換這一行:

IIf([#NT_VAR_STEP_1_1]![EQUIP_TYPE]=‘SOURCE’,’PARAMVAR’,’VAR’) AS CALC_VAR_TYPE 

這樣:

CASE WHEN [#NT_VAR_STEP_1_1].[EQUIP_TYPE]='SOURCE' 
    THEN 'PARAMVAR' 
    ELSE 'VAR' 
END CALC_VAR_TYPE 

,然後使用您的GROUP BY條款相同,但沒有列別名:

CASE WHEN [#NT_VAR_STEP_1_1].[EQUIP_TYPE]='SOURCE' 
    THEN 'PARAMVAR' 
    ELSE 'VAR' 
END 
2

我會假設你要去SQL Server(T-SQL)。 T-SQL不支持IIF,您需要改用CASE