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

Làm cách nào để tránh lặp lại một biểu thức được tính toán nhiều lần trong cùng một lựa chọn?

Bạn có thể sử dụng áp dụng chéo

SELECT T2.[ADD],
       T2.[ADD]*2,
       T2.[ADD]/2
FROM @T AS T1
  CROSS APPLY (SELECT T1.NUM1+T1.NUM2) AS T2([ADD])

hoặc một CTE

WITH C AS
(
  SELECT NUM1+NUM2 AS [ADD]
  FROM @T
)
SELECT [ADD],
       [ADD]*2,
       [ADD]/2
FROM C

hoặc một truy vấn con (còn được gọi là bảng dẫn xuất)

SELECT T.[ADD],
       T.[ADD]*2,
       T.[ADD]/2
FROM (
       SELECT NUM1+NUM2 AS [ADD]
       FROM @T
     ) AS T

Không thể sử dụng bí danh cột trong cùng danh sách trường mà nó được khai báo.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Real so với Floating Point so với Money

  2. sql server 2008:chọn chuỗi con từ một trường

  3. Trả lại ID được chèn lần cuối mà không cần sử dụng truy vấn thứ hai

  4. Cách lấy phần thời gian từ ngày giờ của SQL Server 2005 ở định dạng 'HH:mm tt'

  5. Chèn SQL Server nếu không tồn tại