2012-11-21 293 views
1

我试图在查询另一个Excel电子表格的VBA ODBC连接中写入一个CASE WHEN ELSE END等效项。我曾尝试一切,我只能得到这个成功查询的电子表格:Excel中的SQL VBA语法

.CommandText = "SELECT Data$.CALC_POST_PERIOD='201211' FROM Data$ Data$ 

结果是当条件为真则返回-1当假返回0

如何定制呢?

我试图做这样的事情

SELECT CASE WHEN Data$.CALC_POST_PERIOD='201211' THEN 'CURR_MONTH' ELSE NULL END 

但是这给了我一个错误 - 不匹配

回答

0

为你做

"SELECT [Items], " _ 
"IFF([CALC_POST_PERIOD] = '201211' , 'CURR_MONTH' , '') as NewColumn 
FROM [Data$]" 
0

只是测试TRUE或以下工作运行查询后,FALSE。

If rs.Fields(0).Value Then 
    sReturn = "CURR_MONTH" 
Else 
    sReturn = vbNullString 
End If 

如果是函数,则将sReturn分配给函数名称。只要sReturn之前没有被设置为别的东西,Else部分就不是必须的,但为了清楚起见,我将它包含在这里。还假定你的CommandText是一个名为'rs'的记录集变量。

0

您可以使用开关功能:

SELECT SWITCH(Data$.CALC_POST_PERIOD='201211', 'CURR_MONTH', TRUE, NULL)