加入执行查询 table

Join execute query to table

我有 2 tables :

.

然后我有这段代码,它从第一个 table 创建动态枢轴 table 并将其与第二个 table.

连接起来
DECLARE @cols AS NVARCHAR( MAX ),                                      
        @query AS NVARCHAR( MAX )                                         
        SET @cols = STUFF( ( SELECT ', ' + QUOTENAME( Nazev )
                    FROM Tab1
                    FOR XML PATH( '' ),
                    TYPE
                  ).value( '.', 'NVARCHAR( MAX )' ),
                  1,
                  1,
                  ''
                )                                                         
    SET @query = 'SELECT ZamestnanecID,' + @cols +
         'FROM ( SELECT ZamestnanecID,
                        Tab1.Nazev AS Nazev2,
                        tab2.[castka]
                 FROM Tab1
                 JOIN Tab2 On Tab2.typ = Tab1.Id
               ) AS prePivot
          PIVOT
          (
              SUM( castka )
              FOR Nazev2 IN (' + @cols + ')
          ) p'                                                
         execute(@query)

我需要以某种方式存储已执行的查询,以便我可以通过 ZamestnanecId.It 将其与 tab3 连接起来,其中包含以下列:Jméno、Příjmení、ZaměstnanecId。 (由于图像限制,我不能post图像)

有什么办法吗? 最好将执行的查询用作 select 中的 "from" 参数,但没有必要

您无法存储结果,但可以继续使用如下所示的动态查询

DECLARE 
    @cols AS NVARCHAR( MAX ),                                      
    @query AS NVARCHAR( MAX )                                         
SET @cols = STUFF( ( SELECT ', ' + QUOTENAME( Nazev )
                FROM Tab1
                FOR XML PATH( '' ),
                TYPE
              ).value( '.', 'NVARCHAR( MAX )' ),
              1,
              1,
              ''
            )                                                         
SET @query = 'SELECT * FROM tab3 t3 JOIN '+
     '( SELECT ZamestnanecID,' + @cols +
     ' FROM ( SELECT ZamestnanecID,
                    Tab1.Nazev AS Nazev2,
                    tab2.[castka]
             FROM Tab1
             JOIN Tab2 On Tab2.typ = Tab1.Id
           ) AS prePivot
      PIVOT
      (
          SUM( castka )
          FOR Nazev2 IN (' + @cols + ')
      ) p ) t '+
      ' on t.ZamestnanecId=t3.ZamestnanecId'
     execute(@query)