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

Làm cách nào để kết hợp dữ liệu từ nhiều hàng thành một?

Sử dụng PIVOT Bạn có thể làm như sau

With SampleData AS 
(
SELECT 'Team1' as Team , '[email protected]' as email, 'A' as Groups
UNION SELECT 'Team1' as Team , '[email protected]' as email, 'B' as Groups
UNION SELECT 'Team1' as Team , '[email protected]' as email, 'C' as Groups
UNION SELECT 'Team2' as Team , '[email protected]' as email, 'A' as Groups
UNION SELECT 'Team2' as Team , '[email protected]' as email, 'B' as Groups
UNION SELECT 'Team2' as Team , '[email protected]' as email, 'C' as Groups
)
SELECT Team, A, B,C FROM 
(SELECT * FROM SampleData) source
PIVOT
(MAX(email) FOR Groups IN ([A], [B], [C]) )as pvt

Sản xuất

Team  A                B                C
----- ---------------- ---------------- ----------------
Team1 [email protected] [email protected] [email protected]
Team2 [email protected] [email protected] [email protected]

Xem ví dụ về Data.SE đang hoạt động

Trong một DB không hỗ trợ PIVOT, thay vào đó, bạn có thể thực hiện nhiều phép nối vào bảng của mình. Mặc dù bạn có thể muốn, nhưng như GBN đã chỉ ra, vì chúng tôi không sử dụng tổng hợp.

With SampleData AS 
(
SELECT 'Team1' as Team , '[email protected]' as email, 'A' as Groups
UNION SELECT 'Team1' as Team , '[email protected]' as email, 'B' as Groups
UNION SELECT 'Team1' as Team , '[email protected]' as email, 'C' as Groups
UNION SELECT 'Team2' as Team , '[email protected]' as email, 'A' as Groups
UNION SELECT 'Team2' as Team , '[email protected]' as email, 'B' as Groups
UNION SELECT 'Team2' as Team , '[email protected]' as email, 'C' as Groups
)

SELECT 
    source.Team,
    A.email,
    B.email,
    C.email
FROM 
    (SELECT DISTINCT TEAM From SampleData) source
    LEFT JOIN SampleData A 
    ON source.Team = A.Team
     AND A.GROUPS = 'A'
    LEFT JOIN SampleData B 
    ON source.Team = B.Team
    AND B.GROUPS = 'B'
    LEFT JOIN SampleData C 
    ON source.Team = C.Team
    AND C.GROUPS = 'C'

Xem ví dụ về Data.SE đang hoạt độ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. Yêu cầu không thành công với trạng thái HTTP 401:IN SSRS trái phép

  2. Bảng danh sách máy chủ SQL:Cách hiển thị tất cả các bảng

  3. Làm cách nào để liệt kê khóa chính của bảng SQL Server?

  4. Làm cách nào để định dạng thời gian từ dd:hh:mm:ss thành chỉ hh:mm:ss trong máy chủ SQL?

  5. Các loại ràng buộc khác nhau có sẵn trong SQL Server là gì - Hướng dẫn sử dụng SQL Server / T-SQL Phần 50