在SQL SELECT Query中使用UDF输出字符串?

时间:2015-05-27 21:36:18

标签: sql vba ms-access access-vba

我有一个用户定义的函数(在Microsoft Access中),它从两个字段中获取值并返回一个字符串,该字符串对应于列名。

这似乎不太清楚;下面是我尝试做的简化示例。不幸的是,我无法使用真正的问题,因为它是保密的。

输入:

 Num1 | Num2 | Field1 | Field2 | Field3 | Field4 | Field5

 .....|......|........|........|........|........|.......

 .....|......|........|........|........|........|.......

 .....|......|........|........|........|........|.......

 SQL query: "SELECT Num1,Num2,Func(Num1,Num2)

输出:

  

Num1 | Num2 | FieldVal

在输出中,FieldVal可以是Field1,Field2,Field3,Field4或Field5的值,具体取决于Num1和Num2。截至目前,我有一个用户定义的函数,它根据两个输入(Num1和Num2)确定使用哪个字段(1,2,3,4或5)。

我想我想说的是我想根据Num1和Num2查询不同的列。

2 个答案:

答案 0 :(得分:2)

您可以使用IIF功能,例如:

SELECT Num1, Num2, IIF(NUM1 < NUM2, Field1, IIf(NUM1 = NUM2,Field1, Field2))

我已将操作NUM1 < NUM2NUM1 = NUM2用作示例,只要结果为布尔值,您就可以使用任何其他操作。

请注意,我只详细介绍了两个嵌套IIF,但您可以根据需要进行嵌套。

了解更多信息:http://www.techonthenet.com/access/functions/advanced/iif.php

答案 1 :(得分:1)

您可以使用switch语句,例如:

select  switch(
        Func(Num1,Num2) = 1, Field1,
        Func(Num1,Num2) = 2, Field2,
        Func(Num1,Num2) = 3, Field3,
        ...)