在 SQL Server 脚本中的 SELECT 末尾使用 X?

jbz*_*jbz 5 sql-server scripting t-sql

我对 T-SQL 比较陌生,在查看我的前辈脚本时,我发现了一条我无法解析的行。自己去查查是一件很困难的事情。希望指教。

这条线出现在 WHILE 循环内,但我认为这并不重要。我相信从功能上讲,这是从共享 ID 的几行中的一列中收集值,并将它们用逗号连接到 1 个字段中。但我不知道这叫什么,也不知道如何查找以供自己使用。

这个'x'最后在做什么?谁能给我指点这方面的信息?

(select @invtid = coalesce(@invtid + ',',' ')+rtrim(RoleID) 
FROM (
    Select distinct roleid 
    from UserAccounts 
    WHERE CustID = @custID
     )
 x)
Run Code Online (Sandbox Code Playgroud)

谢谢。

SQL*_*DBA 8

“X”是以下部分的别名

Select distinct roleid 
from UserAccounts 
WHERE CustID = @custID
Run Code Online (Sandbox Code Playgroud)

因此,您可以将其用作:

SELECT x.roleid
FROM  
(    Select distinct roleid 
from UserAccounts 
WHERE CustID = @custID) x
where x.roleid >100
Run Code Online (Sandbox Code Playgroud)

从总体上看,您的查询将如下所示:

 (select @invtid = coalesce(@invtid + ',',' ')+rtrim(x.RoleID) 
 FROM (
    Select distinct roleid 
    from UserAccounts 
    WHERE CustID = @custID
     )x
 )
Run Code Online (Sandbox Code Playgroud)

从技术上讲,您可以使用任何东西作为您的别名。“X”,通常是一个更具描述性的别名。有点像“角色”