我正在学习如何在 excel 驱动的 SQL 查询中使用参数(实际上我一般还在学习 SQL)。感谢帮助我构建查询以根据需要修改结果的好人,我想更进一步,并在 Excel 中提供一个参数来过滤结果。
这是我的查询:
SELECT
fun.FUNCTION_ID
,COALESCE(fun.parent_function, fun2.function_id) as PARENT_FUNCTION
,fun.MODULE_ID
,fun.DESCRIPTION
,fun.FUNCTION_PURPOSE
,fun.PB_OBJECT
,sec.GROUP_ID
,sec.ACCESS_LEVEL
from
MODULE_FUNCTION fun
LEFT JOIN MODULE_FUNCTION fun2
ON fun.function_id = fun2.function_id
AND fun2.function_id IN (SELECT parent_function FROM MODULE_FUNCTION)
LEFT OUTER JOIN FUNCTION_SECURITY sec
ON fun.FUNCTION_ID = sec.FUNCTION_ID
AND sec.GROUP_ID = 'GROUP_NAME'
我需要做的是允许团队中的人员在 Excel 工作表中运行此查询,并在第二个 JOIN 中为“GROUP_NAME”提供他们的组名。不幸的是,我不能使用语法WHERE (sec.GROUP_ID = ?)
(在此处找到),因为我需要从 MODULE_FUNCTION 表中提取所有结果,并且仅在提供的组上存在匹配项时从 FUNCTION_SECURITY 表的右侧插入结果(没有匹配项时保留 null) .
当我尝试在最后使用时,我在 Excel 中AND (sec.GROUP_ID = ?)
得到一个“无效的参数编号” 。从我收集到的“?” 只能与 WHERE 一起使用(并在测试查询中为我找到工作)。
我尝试了很多事情,包括声明@parameter,但无济于事。
我很想尝试这种技术,但如果可能的话,我想避免使用 VB。