Sql server 2008 如何使用内部IIF转换SQL查询并在MS SQL 2008 Server上工作

Sql server 2008 如何使用内部IIF转换SQL查询并在MS SQL 2008 Server上工作,sql-server-2008,Sql Server 2008,我有一个SQL查询,它在EXCEL连接中用于从CSV文件导入的数据,该文件会定期更改。 查询中的Where子句是: 其中(A-900,0,1列)>0)或(iif(B10000,1,0列)>0) 上述查询在Excel中运行良好,现在我将CSV文件导入SQL 2008 Server。。但由于iif功能在2008服务器中不可用,因此无法正常工作 我需要帮助才能将此查询转换为在SQL 2008 Server上工作。 提前感谢。您可以重构IIF,如下所示。这将适用于所有SQL Server版本 Colum

我有一个SQL查询,它在EXCEL连接中用于从CSV文件导入的数据,该文件会定期更改。 查询中的Where子句是:

其中(A-900,0,1列)>0)或(iif(B10000,1,0列)>0)

上述查询在Excel中运行良好,现在我将CSV文件导入SQL 2008 Server。。但由于iif功能在2008服务器中不可用,因此无法正常工作

我需要帮助才能将此查询转换为在SQL 2008 Server上工作。


提前感谢。

您可以重构
IIF
,如下所示。这将适用于所有SQL Server版本

ColumnA < -.4 
AND (
    CASE WHEN ColumnB<500 And ColumnC>-900 And ColumnD>-900 THEN 0 ELSE 1 END > 0
    OR CASE WHEN ColumnB<2000 And ColumnE+ColumnF>10000 THEN 1 ELSE 0 END > 0)
ColumnA<-.4
及(
当列B-900和列D>-900时,则为0,否则1结束>0
或列B10000时的情况,然后是1,否则0结束>0)
此处使用的
CASE
表达式的搜索形式计算
WHEN
条件,并返回
THEN
值WHEN true或
ELSE
值false。
END
关键字表示
CASE
表达式的结尾


检查此查询中的每个
大小写
表达式结果,查看其是否大于零。如果其中一个结果大于零(由于
逻辑运算符),则括号中的谓词为true,并与另一个
WHERE
子句谓词(
ColumnA<-.4
)一起求值。

谢谢Dan,这正是我要找的。。它做得很完美,只是做了些小小的修改,我把它放在了另一个括号里。。你能解释一下>(大于号)在这个查询中的用法吗?我无法理解这个逻辑。非常感谢。@AnilPatel,我添加了文档链接和其他解释。