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

chuyển một hàng thành cột

Kiểm tra bảng tổng hợp;

Xem http://msdn.microsoft.com/en-us/library/ ms177410.aspx

Một truy vấn đơn giản cho một số lượng hữu hạn StatusTypeNames sẽ giống như;

SELECT * FROM 
(SELECT MonthName, StatusTypeName as attributeCol, StatusCount FROM @ResultsTable) rt 
PIVOT ( MAX(StatusCount) FOR attributeCol in ([ToBeScheduled],[Complete])) as pvt
ORDER BY MonthName

Lưu ý sử dụng MAX. Nếu có khả năng bạn sẽ có nhiều hàng với sự kết hợp tên tháng và tên trạng thái giống nhau, thì bạn có thể muốn sử dụng SUM.

Để sử dụng các cột động như madhivinan đề xuất, bạn có thể theo dõi ví dụ này. Cuộn xuống dưới cùng.

Tôi đã cố gắng làm cho nó hoạt động với ví dụ của bạn, nhưng vì tôi gặp một số vấn đề có thể do thực tế là tôi không có bảng. Tuy nhiên, những thứ như sau là điều bạn đang theo đuổi.

DECLARE @listCol VARCHAR(2000)
DECLARE @query VARCHAR(4000)
SELECT  @listCol = SELECT STUFF (( SELECT DISTINCT '],[' + 
                    StatusTypeName FROM @ResultsTable ORDER BY '],[' + 
                    StatusTypeName FOR XML PATH ('')), 1, 2, '') + ']'


SET @query =
'SELECT * FROM
      (SELECT MonthNameCol, StatusTypeName as attributeCol, StatusCount FROM @ResultsTable) rt
PIVOT ( MAX(StatusCount) FOR attributeCol in ('[email protected]+')) AS pvt ORDER BY MonthNameCol'

EXECUTE (@query)

Nó không hoàn toàn đúng, nhưng đó là một điểm khởi đầu.

Chúc các bạn thành cô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. Các hàm toán học của SQL Server (Danh sách đầy đủ)

  2. Tại sao tôi không thể kết nối với cơ sở dữ liệu mssql của mình bằng PHP?

  3. Không thể liên kết số nhận dạng nhiều phần

  4. Chèn dữ liệu pyodbc.Binary (BLOB) vào cột hình ảnh SQL Server

  5. Vấn đề làm tròn trong các chức năng LOG và EXP