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

Bảng tổng hợp động với nhiều cột trong máy chủ sql

Vui lòng sử dụng cái này (Nếu bạn đang gặp sự cố Đối chiếu, vui lòng thay đổi tất cả 3 kiểu dữ liệu INT):

Mã STATIC:

SELECT HEADER, [A_1],[B_2],[C_3],[D_4],[E_5],[F_6]        
FROM    
(SELECT DECK,HEADER, VALUE FROM REPORT   
    UNPIVOT      
    ( 
    VALUE FOR HEADER IN ([JIB_IN],[REV],[REV_INSIGHT],[JIB_OUT],[CREATION])  
    ) UNPIV
) SRC     
PIVOT    
(
    SUM(VALUE) 
    FOR DECK IN ([A_1],[B_2],[C_3],[D_4],[E_5],[F_6]) 
) PIV

Sử dụng SQL động:

DECLARE @COLSUNPIVOT AS NVARCHAR(MAX),
@QUERY  AS NVARCHAR(MAX),
@COLSPIVOT AS  NVARCHAR(MAX)

SELECT @COLSUNPIVOT = STUFF((SELECT ','+QUOTENAME(C.NAME)
FROM SYS.COLUMNS AS C
WHERE C.OBJECT_ID = OBJECT_ID('REPORT') AND C.NAME <> 'DECK'
FOR XML PATH('')), 1, 1, '')

SELECT @COLSPIVOT = STUFF((SELECT  ',' + QUOTENAME(DECK)
FROM REPORT T FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)') ,1,1,'')

SET @QUERY 
= 'SELECT HEADER, '[email protected]+'
FROM
(
SELECT DECK,HEADER,VALUE FROM REPORT
UNPIVOT
(
  VALUE FOR HEADER IN ('[email protected]+')
) UNPIV
) SRC
PIVOT
(
SUM(VALUE)
FOR DECK IN ('[email protected]+')
) PIV'

EXEC(@QUERY)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ràng buộc kiểm tra chồng chéo phạm vi ngày

  2. Cách cập nhật và đặt hàng bằng ms sql

  3. Truyền ký hiệu khoa học (từ varchar -> số) trong một chế độ xem

  4. Làm cách nào để tôi tham số hóa một chuỗi rỗng với DBNull. Giá trị rõ ràng và nhanh chóng

  5. Tôi có thể sử dụng một luồng để CHÈN hoặc CẬP NHẬT một hàng trong SQL Server (C #) không?