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

TSQL PIVOT NHIỀU CỘT

Vì bạn muốn xoay vòng nhiều cột dữ liệu, nên trước tiên, tôi khuyên bạn nên bỏ quay result , scoregrade để bạn không có nhiều cột nhưng bạn sẽ có nhiều hàng.

Tùy thuộc vào phiên bản SQL Server của bạn, bạn có thể sử dụng chức năng UNPIVOT hoặc ÁP DỤNG CHÉO. Cú pháp để hủy chia dữ liệu sẽ tương tự như:

select ratio, col, value
from GRAND_TOTALS
cross apply
(
  select 'result', cast(result as varchar(10)) union all
  select 'score', cast(score as varchar(10)) union all
  select 'grade', grade
) c(col, value)

Xem SQL Fiddle với Demo. Khi dữ liệu đã được bỏ chia nhỏ, bạn có thể áp dụng chức năng PIVOT:

select ratio = col,
  [current ratio], [gearing ratio], [performance ratio], total
from
(
  select ratio, col, value
  from GRAND_TOTALS
  cross apply
  (
    select 'result', cast(result as varchar(10)) union all
    select 'score', cast(score as varchar(10)) union all
    select 'grade', grade
  ) c(col, value)
) d
pivot
(
  max(value)
  for ratio in ([current ratio], [gearing ratio], [performance ratio], total)
) piv;

Xem SQL Fiddle với Demo. Điều này sẽ cho bạn kết quả:

|  RATIO | CURRENT RATIO | GEARING RATIO | PERFORMANCE RATIO |     TOTAL |
|--------|---------------|---------------|-------------------|-----------|
|  grade |          Good |          Good |      Satisfactory |      Good |
| result |       1.29400 |       0.33840 |           0.04270 |    (null) |
|  score |      60.00000 |      70.00000 |          50.00000 | 180.00000 |



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Khi nào thì tốt hơn nên lưu trữ cờ dưới dạng bitmask thay vì sử dụng bảng kết hợp?

  2. Truy vấn SQL - Nối kết quả thành một chuỗi

  3. String_agg cho SQL Server trước năm 2017

  4. Cách giao dịch ngầm hoạt động trong SQL Server

  5. Nhật ký giao dịch SQL Server, Phần 2:Kiến trúc nhật ký