MS SQL查询中的STUFF我需要使用AND

时间:2016-09-14 17:26:39

标签: sql sql-server sql-server-2014

我希望这个问题不会让人难以理解,但这里也是如此。

我的查询使用 ST角色设置的 STUFF()运算符。 角色的输出为:

 Main Administrator, Per Admin, Coordinator

现在我希望在我的查询中使用角色 AND 属性如下:

 Select 
    *, STUFF(blah blah...) AS Roles 
 FROM
    table AS T1 
 INNER JOIN table2 AS T2
    ON T1.user = T2.user 
 Where 
    .... 
 AND 
    Roles = 'Per Admin'

然而,有两件事是错的。

1)我无法使用"角色"在 AND 操作符中,说明错误是'无效的列名'角色'。

2)一旦我上述工作#1,我需要能够在列出的角色中找到每个管理员。我想它可能涉及某种类型的 string_split 或类似的东西?

SQL大师的帮助会很棒:)

3 个答案:

答案 0 :(得分:1)

您可以使用子查询或cte:

where ',' + cte.roles + ',' like '%,' + 'Per admin' + ',%'

如果你想在其他角色中找到这个角色,那么就像这样:

sorted([dictionnary],[function])

答案 1 :(得分:1)

尝试使用以下查询。

   ;With cte_1
    AS
   (Select    T1.User, ..other columns.., STUFF(blah blah...) AS Roles 
     FROM    table AS T1 
     INNER JOIN table2 AS T2
         ON T1.user = T2.user )
     Select *
     From cte_1
     Where Roles  like '%Per Admin%'

答案 2 :(得分:1)

您可以在查询中添加EXISTS并复制STUFF查询或类似内容,并在EXISTS中添加过滤器。

Select 
    *, STUFF(blah blah...) AS Roles 
 FROM
    table AS T1 
 INNER JOIN table2 AS T2
    ON T1.user = T2.user 
 Where 
    .... 
 AND 
    EXISTS (SELECT 1 FROM blahblah WHERE RoleName = 'Per Admin')