SELECT查询中的OLEDB CASE [关闭]
Posted
技术标签:
【中文标题】SELECT查询中的OLEDB CASE [关闭]【英文标题】:OLEDB CASE WHEN in SELECT Query [closed] 【发布时间】: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 吗? 【参考方案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() 调用的需求是一个相当混乱的提议。
【讨论】:
以上是关于SELECT查询中的OLEDB CASE [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
SQL查询语句SELECT中带有case when嵌套子查询判断的问题
SQL SELECT、CASE、BETWEEN INTO 语句