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嵌套子查询判断的问题

Case 语句中的 select 语句

SQL SELECT、CASE、BETWEEN INTO 语句

SQL Server 2008 - SELECT 子句中的 Case / If 语句 [重复]

sql中的多列[关闭]

TRIGGER 中的 SELECT CASE 语句