2011-08-31 32 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