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

Xóa trùng lặp trong câu lệnh động ROW_NUMBER () OVER ORDER BY

Một cách bạn có thể làm là xác định bí danh cột ở một cấp khác để bạn có thể tham chiếu nó hai lần mà không cần lặp lại biểu thức.

« CHỌN TRƯỜNG HỢP KHI @SortBy LIKE 'column1%' THÌ Truyền (column1 AS SQL_VARIANT) KHI @SortBy THÍCH 'column2%' THÌ Truyền (column2 AS SQL_VARIANT) KHI @SortBy THÍCH 'column3%' THÌ Truyền (column3 AS SQL_VARIANT) KHI @SortBy LIKE 'column4%' THEN Cast (column4 AS SQL_VARIANT) END) C (sort_col)

Mặc dù vậy, tôi sẽ xem xét sử dụng SQL động cho việc này. Loại truy vấn bắt tất cả sẽ giết chết ý tưởng về một kế hoạch tốt có thể sử dụng các chỉ mục để tránh sắp xếp.



  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ỗi - Giao dịch được liên kết với kết nối hiện tại đã hoàn tất nhưng chưa được xử lý

  2. Bí danh tham chiếu (được tính bằng SELECT) trong mệnh đề WHERE

  3. Tôi vẫn bị tràn Số học khi lọc theo ngày giờ truyền ngay cả khi tôi sử dụng IsDate ()

  4. Chuyển đổi BINARY được lưu trữ dưới dạng VARCHAR thành BINARY

  5. Sử dụng SELECT SCOPE_IDENTITY () trong ADODB Recordset