首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mark 2010返回#func[感叹号]

mark 2010返回#func[感叹号]
EN

Stack Overflow用户
提问于 2018-10-31 13:33:22
回答 1查看 42关注 0票数 0

我有一个包含开关的sql语句,我想在ms-access-2010上执行.

sql:

代码语言:javascript
复制
SELECT 
TABLE_1.ID, 
SWITCH
(
    (TABLE_3.ID IN (7,8) AND TABLE_1.SOME_COLUMN = 2), (SELECT MAX(TABLE_4.ID) FROM TABLE_4 WHERE  TABLE_4.TABLE_2_ID = TABLE_2.ID),
    (SELECT MIN(TABLE_4.SOME_COLUMN) FROM TABLE_4 WHERE TABLE_4.TBL_2_ID = TABLE_1.TBL_2_ID)
)AS SOME_ALIAS 
FROM 
    ((TABLE_1 
        LEFT JOIN TABLE_2 ON TABLE_1.TABLE_2_ID = TABLE_2.ID)
        LEFT JOIN TABLE_3 ON TABLE_2.TABLE_3_ID = TABLE_3.ID)

在我的结果中,'some_column‘列总是#Function!

如果我不使用switch-语句并将从这两种情况中添加的子选择作为正常选择字段,如下所示:

代码语言:javascript
复制
SELECT 
TABLE_1.ID, 
(SELECT MAX(TABLE_4.ID) FROM TABLE_4 WHERE  TABLE_4.TABLE_2_ID = TABLE_2.ID) AS SOME_COLUMN_1,
(SELECT MIN(TABLE_4.SOME_COLUMN) FROM TABLE_4 WHERE TABLE_4.TBL_2_ID = TABLE_1.TBL_2_ID) AS SOME_COLUMN_2
FROM 
    ((TABLE_1 
        LEFT JOIN TABLE_2 ON TABLE_1.TABLE_2_ID = TABLE_2.ID)
        LEFT JOIN TABLE_3 ON TABLE_2.TABLE_3_ID = TABLE_3.ID)

我没有遇到任何问题(在SOME_COLUMN_1和SOME_COLUMN_2中只有几行没有值)。

是什么导致了#FUNCTION!的结果?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-31 18:18:43

Switch语句需要偶数的参数。您只传递了3个参数,从而导致了一个错误。

您可以使用IIF,也可以添加一个额外的比较参数(如果希望返回最后一个参数(如果第一个参数不是真的话),可以将True作为第三个参数)。

代码语言:javascript
复制
SELECT 
TABLE_1.ID, 
IIF
(
    (TABLE_3.ID IN (7,8) AND TABLE_1.SOME_COLUMN = 2), (SELECT MAX(TABLE_4.ID) FROM TABLE_4 WHERE  TABLE_4.TABLE_2_ID = TABLE_2.ID),
    (SELECT MIN(TABLE_4.SOME_COLUMN) FROM TABLE_4 WHERE TABLE_4.TBL_2_ID = TABLE_1.TBL_2_ID)
)AS SOME_ALIAS 
FROM 
    ((TABLE_1 
        LEFT JOIN TABLE_2 ON TABLE_1.TABLE_2_ID = TABLE_2.ID)
        LEFT JOIN TABLE_3 ON TABLE_2.TABLE_3_ID = TABLE_3.ID)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53084631

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档