【发布时间】:2020-11-10 13:58:23
【问题描述】:
我已经为 SAP B1 数据库使用了这个 SQL 查询,它应该运行不同的查询取决于用户的组:
SELECT CASE
WHEN T0.GroupId = '2'
THEN
(
SELECT T0.Substitute,
T0.ItemCode,
T1.ItemName
FROM OSCN T0
INNER JOIN OITM T1 ON T0.ItemCode = T1.ItemCode
WHERE T0.CardCode = 'CV-1234'
)
ELSE(CASE
WHEN(T0.GroupId = '4')
THEN
(
SELECT T0.ItemCode
FROM OSCN T0
WHERE T0.CardCode = 'CV-1234'
)
ELSE ''
END)
END
FROM OUGR T0
INNER JOIN USR7 T1 ON T1.UserId = T1.UserId
WHERE T1.UserId = 'George'
但是当我运行它时,我得到一个错误“当子查询没有用 EXISTS 引入时,选择列表中只能指定一个表达式”。
感谢任何帮助。 提前致谢。
【问题讨论】:
-
简化复制
select case when 1=2 then 'a' else (select 1,2) end你不能这样使用 CASE。您能用示例数据和预期结果解释您要达到的目标吗? -
我将此查询用于 SAP B1(服务调用)中的格式化搜索:在字段 ItemCode 字段中,当用户键入项目代码并点击 Tab 时,查询应显示结果列表,取决于在用户组上: - 第 2 组:替代(BP 代码)、ItemCode、ItemName - 第 4 组:ItemCode、ItemName。
标签: sql sql-server sapb1