Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

cách gán giá trị cte cho biến

Bạn không thể đặt giá trị bằng SET từ khóa trong SELECT Bạn có thể gán các trường từ truy vấn cho các biến trong SELECT tuyên bố:

WITH CTE AS (
  /** .. Your Query Here .. **/
)
SELECT
  @YourVariable = FieldNameOrSubquery -- In short: Expression
FROM
  CTE

Trong trường hợp này, tất cả các tệp trong danh sách CHỌN phải được gán cho một biến!

Hoặc bạn có thể chỉ định một cột một hàng duy nhất SELECT kết quả của câu lệnh cho một biến bởi SET từ khóa:

SET @YourVariable = (SELECT COUNT(1) FROM YourTable).

Bạn không thể kết hợp các tùy chọn trên.

Hơn nữa, CTE được xác định trong phạm vi thực thi của một SELECT duy nhất , INSERT , UPDATE hoặc DELETE tuyên bố. (http://msdn.microsoft.com/en-us/library/ms175972.aspx). SET không phải là SELECT / INSERT / UPDATE / DELETE , đây là lý do tại sao SQL Server báo cáo lỗi cú pháp (không thể xác định CTE trong phạm vi của câu lệnh SET.)

Giải pháp với truy vấn mẫu của bạn

;WITH CTEima(PersonId,IsEmployeeActive) AS
( SELECT COUNT(*)
  FROM   custom.viwSSAppsEmpMasterExtended vem
  WHERE  vem.SupervisorPersonId = @p_PersonId

  UNION ALL

  SELECT CTEima.IsEmployeeActive
  FROM   Custom.viwSSAppsEmpMasterExtended vem
  JOIN   CTEima on CTEima.PersonId = vem.SupervisorPersonId
)
SELECT @v_IsManager = COUNT(*)
FROM CTEima
WHERE IsEmployeeActive = 'Y'


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để mô phỏng UNPIVOT trong Access?

  2. Cách tạo cơ sở dữ liệu trong SQL Server bằng TSQL hoặc GUI - Hướng dẫn SQL Server / TSQL Phần 24

  3. Cách liệt kê tất cả các ngày giữa hai ngày

  4. Tự động tạo các cột sql

  5. Xóa tài khoản thư cơ sở dữ liệu trong SQL Server (T-SQL)