Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 在SQL Server中引用多个临时表的结果_Sql Server_Subset - Fatal编程技术网

Sql server 在SQL Server中引用多个临时表的结果

Sql server 在SQL Server中引用多个临时表的结果,sql-server,subset,Sql Server,Subset,我正在使用SQLServer2008 我编写了如下连接,其中第一个连接封装在“With as”语句中,这样我就可以将输出表命名为“a”,然后在下面看到的下一个选择和连接中引用“a”结果表 这个很好用。然后我想做的是为另一个select语句和join引用第二个表,但是当我尝试将其包装在“With-as”语句中时,编辑器不接受它作为“With-as”第二个实例的合法语法 如何将生成的表子集以在进一步的select和join语句中引用?我没有写入数据库的权限,因此无法在数据库中创建永久表 多谢各位 W

我正在使用SQLServer2008

我编写了如下连接,其中第一个连接封装在“With as”语句中,这样我就可以将输出表命名为“a”,然后在下面看到的下一个选择和连接中引用“a”结果表

这个很好用。然后我想做的是为另一个select语句和join引用第二个表,但是当我尝试将其包装在“With-as”语句中时,编辑器不接受它作为“With-as”第二个实例的合法语法

如何将生成的表子集以在进一步的select和join语句中引用?我没有写入数据库的权限,因此无法在数据库中创建永久表

多谢各位

With A as
(
SELECT POL.[COMPANY_CODE]
      ,POL.[POLICY_NUMBER]
      ,POL.[STATUS_CODE]
      ,POL.ORIG_CLIENT_NUM 
      ,TA.LINE 

 FROM [SamsReporting].[dbo].[POLICY] POL

 Left join [SamsReporting].[dbo].[Transact] TA
 ON TA.POLICY_NUMBER = POL.POLICY_NUMBER and TA.BASE_Account = 'B' 
)


 Select PM.POLICY_NUMBER
       ,A.[COMPANY_CODE]
      ,A.[POLICY_NUMBER]
      ,A.[Policy Status]
      ,eApp.SourceCode



  From A

Left Join Web.dbo.Pmetrics PM on A.POLICY_NUMBER=PM.POLICY_NUMBER

Left Outer Join DDP.pol.eAppStaging eApp
on A.POLICY_NUMBER=eApp.PolicyNumber

where eApp.SourceCode = 'HAQ' or eApp.SourceCode = 'PLS'

听起来像是个语法问题。谷歌CTE(公共表表达式)和审查他们是如何形成的一些例子

With A as
     (SELECT POL.[COMPANY_CODE]
      ,POL.[POLICY_NUMBER]
      ,POL.[STATUS_CODE]
      ,POL.ORIG_CLIENT_NUM 
      ,TA.LINE 

      FROM [SamsReporting].[dbo].[POLICY] POL
      Left join [SamsReporting].[dbo].[Transact] TA
          ON TA.POLICY_NUMBER = POL.POLICY_NUMBER and TA.BASE_Account = 'B'),
     B as (
      Select PM.POLICY_NUMBER
       ,A.[COMPANY_CODE]
       ,A.[POLICY_NUMBER]
       ,A.[Policy Status]
       ,eApp.SourceCode  
      From A
      Left Join Web.dbo.Pmetrics PM on A.POLICY_NUMBER=PM.POLICY_NUMBER
      Left Outer Join DDP.pol.eAppStaging eApp
         on A.POLICY_NUMBER=eApp.PolicyNumber
      where eApp.SourceCode = 'HAQ' or eApp.SourceCode = 'PLS')

Select *
From B -- inner join some table
where some condition = 1
公共表表达式(CTE)可以按照您的意愿彼此构建。例如,您可以执行以下操作:

WITH CTE1 AS (SELECT * FROM Table 1)
, CTE2 AS (SELECT * FROM CTE1)
, CTE3 AS (SELECT * FROM CTE2)
对于第一个CTE,您只需要WITH语句。之后,只需使用CTE名称,如我的示例中所示

希望有帮助


Ash

Ash和RwKing,谢谢你们两位。我认为用删除第二个字符并在中间添加逗号解决了这个问题。很高兴它起到了作用。请接受一个作为答案,这样问题就结束了。没问题@lionrunner谢谢你的回答。