我目前有一个返回此
的查询USER GROUP GROUPCODE
U1 G1 abcd
U1 G2 P vxyz
U2 G1 abcd
U2 G2 lmno
查询看起来像这样
select u.user, g.group, g.groupcode
FROM u
INNER JOIN g ON u.user = g.user
如果用户在“P”组中,我想获得匹配的“非P”组的组和组代码。 所以上面就是这样。
USER GROUP GROUPCODE
U1 G1 abcd
U1 G2 lmno
U2 G1 abcd
U2 G2 lmno
我使用的是非常有限的专有系统,它不支持变量或需要全文索引列的任何内容。有办法做到这一点还是我在做梦?
编辑:我正在尝试将GROUP和GROUPCODE替换为包含'P'组的行。 该查询有点像注册文件。 'P'组就像普通组的特殊版本。但是对于注册,P组中的用户应该被放入正常版本。可以使用此
来完成GROUPSELECT CASE WHEN (RIGHT(SU.FULLNAME, 2) = ' P')
THEN (substring(g.group, 1, (len(g.group) - 2)))
ELSE g.group
END AS GROUP
但后来我无法弄清楚如何获得匹配的GROUPCODE
答案 0 :(得分:1)
假设GROUP
总是像'AllText' P
。
SELECT
u.user,
CASE WHEN g.group LIKE '%P' THEN LEFT(g.group, 2)
ELSE g.group AS group,
CASE WHEN g.group LIKE '%P' THEN (
SELECT TOP 1 gro.groupcode
FROM g AS gro
WHERE gro.group = LEFT(g.group , 2)
)
ELSE g.groupcode END AS groupcode,
FROM
u INNER JOIN
g ON u.user = g.user
答案 1 :(得分:0)
select u.user, g.group, g.groupcode
FROM u
INNER JOIN g ON u.user = g.user
where r.group no like '%P%'