簡體   English   中英

我們如何在 sql server 的子查詢中使用 CTE?

[英]How we can use CTE in subquery in sql server?

我們如何在 SQL Server 的子查詢中使用 CTE?

像:

SELECT id (I want to use CTE here), name FROM table_name

只需在頂部定義您的 CTE 並在子查詢中訪問它?

WITH YourCTE(blubb) AS
(
    SELECT 'Blubb'
)
SELECT id,
       (SELECT blubb FROM YourCTE),
       name
FROM   table_name

它不起作用:

select id (I want to use CTE here), name from table_name

不能在子查詢中使用 CTE。

您可以將其視為一種解決方法:

CREATE VIEW MyCTEView AS ..here comes your CTE-Statement.

然后你可以這樣做:

select id (select id from MyCTEView), name from table_name

使用所有 CTE 的 UNION 集創建具有 CTE/多個 CTE 的視圖

CREATE VIEW [dbo].[_vEmployees] 
AS 
    WITH 
    TEST_CTE(EmployeeID, FirstName, LastName, City, Country)
        AS (
            SELECT EmployeeID, FirstName, LastName, City, Country FROM Employees WHERE EmployeeID = 4
        ), 
    TEST_CTE2
        AS (
            SELECT EmployeeID, FirstName, LastName, City, Country FROM Employees WHERE EmployeeID = 7
        )
    SELECT EmployeeID, FirstName, LastName, City, Country FROM TEST_CTE UNION SELECT * FROM TEST_CTE2
GO

在此處輸入圖片說明

現在,將其用於子查詢

SELECT * FROM Employees WHERE EmployeeID IN (SELECT EmployeeID FROM _vEmployees)

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM