在SELECT Query中的OLEDB CASE

时间:2009-11-16 12:37:16

标签: sql oledb ms-jet-ace

如何将case when语句与oledb一起用于excel文件?
select prodid, case prodid when 1 then 'fine' when 2 then 'good' end

一样

2 个答案:

答案 0 :(得分:4)

查询Excel时,您必须使用IIF而不是CASE,例如

SELECT prodid,IIF(prodid = 1,'fine',IIF(prodid = 2,'good','')) 来自MyExcel

正如您所看到的,它可能会很快变得混乱。如果你只进行双向评估,那也不算太糟糕,但在你的代码中,你不清楚你是否只有2个可能的prodid值或者更多。我的例子假设有其他值,因此嵌套的IIF。

答案 1 :(得分:3)

OLEDB只是排序的“中继”,只是重复查询底层源。

我不相信Excel支持CASE WHEN构造,因此即使通过OLEDB也无法使用它。

您可以使用特定于Excel的习惯用法IIF() function,如CodeByMoonlight的答案中所述。如上所述,对于需要超过3或4个案例的情况,嵌套IIF()调用的需要是一个相当混乱的建议。