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

Lặp qua một bảng bằng Áp dụng chéo và ĐOÀN KẾT TẤT CẢ các kết quả

Sử dụng Cross Apply để bỏ chia sẻ kết quả. Truy vấn truy vấn động phải được tạo theo định dạng này.

SELECT mnum,
       label,
       label_value,
       [Property Type]
FROM   #SetValuesTable
       CROSS apply(VALUES ('la1',la1),('la2',la2),('la3',la3),
                          ('sa1',sa1),('sa2',sa2),('sa3',sa3),
                          ('ha1',ha1),('ha2',ha2),('ha3',ha3),
                          ('ka1',ka1),('ka2',ka2)) cs (label, label_value) 

Dynamic query phải là một cái gì đó giống như

DECLARE @label VARCHAR(max)='',
        @sql   NVARCHAR(max)

SELECT @label += '(' + '''' + label + ''',' + label + '),'
FROM   (SELECT DISTINCT Isnull(label, '') label
        FROM   #labelTempTab)a

SELECT @label = LEFT(@label, Len(@label) - 1)

SET @sql= 'SELECT mnum,
             label,
             label_value,
             [Property Type]
    FROM   #SetValuesTable
           CROSS apply(VALUES ' + @label
          + ') cs (label, label_value) '

EXEC Sp_executesql @sql 

Lưu ý: Vì bạn đang tạo danh sách giá trị từ #labelTempTab đảm bảo rằng bạn có tất cả các nhãn trong #SetValuesTable bảng




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tìm kiếm danh mục / chỉ mục đầy đủ cho% book%

  2. Tạo một cột được tính toán sử dụng dữ liệu từ một bảng khác trong SQL Server

  3. Cách tốt nhất để tìm nạp hàng loạt bản ghi từ SQL Server là gì

  4. Câu lệnh xóa SQL Server:Cách xóa một hoặc nhân hàng khỏi bảng

  5. Kế hoạch thực thi chế độ xem được phân vùng