【问题标题】:Select only columns from joined tables from CTE从 CTE 的联接表中仅选择列
【发布时间】:2015-03-13 19:39:23
【问题描述】:

以下是我的 CTE:

;WITH CTE AS
(SELECT O.*, E.Num, E.Amount 
FROM OData O
INNER JOIN Equip E
ON O.Name = E.Name)  
SELECT * FROM CTE -- gives results I want to join to 

以下是我想要从SELECT 查询的查询(并且仅将这个SELECT 语句用于我的查询结果:

SELECT 
    MU.Type
    ,MU.Num
    ,MU.MTBUR
    ,MF.MTBF
    ,MU.Hours 
    ,MF.Hours 
FROM 
    MUType_Stage MU
INNER JOIN 
    MFType_Stage MF
    ON
    MU.Type = MF.Type
    AND
    MU.Num = MF.Num

-- 需要在这里做JOINCTE

INNER JOIN 
        Status_STAGE S
        ON
        MU.Nu = S.Part
    LEFT OUTER JOIN
        RCN N
        ON
        N.Name  = R.Part
    LEFT OUTER JOIN 
        Repair RR
        ON
        R.ACSS_Name = RR.Name

所以基本上我需要JOINSELECT 查询中的CTE 我想要结果。

OR ALTERNATIVELY 使用此 select 语句加入 CTE,但仅加入第二个 select 语句中的选定列

【问题讨论】:

  • 您已将您的 CTE 命名为“CTE”(这不是很具描述性)...所以只需在您需要加入的任何列上加入 CTE。从这个例子中根本不清楚这些列是什么,但大概你知道。实际上,我不确定您的问题或疑问是什么?你说“需要在这里加入 CTE”......所以......做吗?我错过了什么?只需从 CTE 块中取出“SELECT * FROM CTE”,然后在您指定的位置添加 JOIN CTE。

标签: sql-server join common-table-expression


【解决方案1】:

试试这个语法

WITH CTE
     AS (SELECT O.*,
                E.Num,
                E.Amount
         FROM   OData O
                INNER JOIN Equip E
                        ON O.Name = E.Name)
SELECT MU.Type,
       MU.Num,
       MU.MTBUR,
       MF.MTBF,
       MU.Hours,
       MF.Hours
FROM   MUType_Stage MU
       INNER JOIN MFByACType_Stage MF
               ON MU.Type = MF.Type
                  AND MU.Num = MF.Num
       INNER JOIN CTE C --- JOIN HERE as like other tables
               ON C.Num = MF.Num
       INNER JOIN Status_STAGE S
               ON MU.Nu = S.Part
       LEFT OUTER JOIN RCN N
                    ON N.Name = R.Part
       LEFT OUTER JOIN Repair RR
                    ON R.ACSS_Name = RR.Name 

【讨论】:

    猜你喜欢
    • 2022-01-03
    • 2017-07-01
    • 2016-07-21
    • 2021-05-04
    • 2021-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多