请解释查询内容

-4 sql-server pivot

这看起来也正是我所需要的。然而,不精通查询,无法理解其中的一些内容..所以你能为我澄清一些事情吗?

;WITH x AS <--- is this a comment?
( SELECT *, rn = ROW_NUMBER() OVER (PARTITION BY ID, [Type] ORDER BY [Contact No]) FROM dbo.SourceTable )
SELECT ID, HPhone = MAX(CASE WHEN [Type] = 'home' THEN [Contact No] END),
CPhone1 = MAX(CASE WHEN [Type] = 'cell' AND rn = 1 THEN [Contact No] END),
 CPhone2 = MAX(CASE WHEN [Type] = 'cell' AND rn = 2 THEN [Contact No] END),
 WPhone1 = MAX(CASE WHEN [Type] = 'work' AND rn = 1 THEN [Contact No] END)
, Ext1 = MAX(CASE WHEN [Type] = 'work' AND rn = 1 THEN [Ext] END),
 WPhone2 = MAX(CASE WHEN [Type] = 'work' AND rn = 2 THEN [Contact No] END),
 Ext2 = MAX(CASE WHEN [Type] = 'work' AND rn = 2 THEN [Ext] END)

FROM x <---------- what is 'x'? GROUP BY ID ORDER BY ID;
Run Code Online (Sandbox Code Playgroud)

我从https://dba.stackexchange.com/a/242195复制了查询并将其粘贴到此处

mus*_*cio 5

这是公用表表达式(CTE)的 SQL 语法。它定义了一个名为 的“虚拟表” x,您稍后可以从中进行选择。

前面的分号是这里解释的WITH一个怪癖。