【问题标题】:OLEDB CASE WHEN in SELECT Query [closed]SELECT查询中的OLEDB CASE [关闭]
【发布时间】:2009-11-16 12:37:15
【问题描述】:

如何使用case when 语句和oledb 来生成excel 文件?
select prodid, case prodid when 1 then 'fine' when 2 then 'good' end

【问题讨论】:

  • 您的 Caps Lock 或 Shift 键卡住了吗?
  • 需要选择查询来读取excel文件
  • 这甚至不支持 Provider=Microsoft.ACE.OLEDB.12.0 吗?

标签: sql oledb ms-jet-ace


【解决方案1】:

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

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

如您所见,它很快就会变得一团糟。如果您只有双向评估,这还不错,但在您的代码中,您是否只有 2 个可能的 prodid 值或更多值尚不清楚。我的示例假设还有其他值,因此是嵌套的 IIF。

【讨论】:

    【解决方案2】:

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

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

    您可以改用 Excel 特有的习语 IIF() function,如 CodeByMoonlight 的回答中所述。如前所述,对于需要超过 3 或 4 个案例的情况,嵌套 IIF() 调用的需求是一个相当混乱的提议。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-01
      • 2022-01-23
      • 1970-01-01
      • 1970-01-01
      • 2013-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多