Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да комбинирам данни от множество редове в един?

С помощта на PIVOT можете да направите следното

With SampleData AS 
(
SELECT 'Team1' as Team , 'example@sqldat.com' as email, 'A' as Groups
UNION SELECT 'Team1' as Team , 'example@sqldat.com' as email, 'B' as Groups
UNION SELECT 'Team1' as Team , 'example@sqldat.com' as email, 'C' as Groups
UNION SELECT 'Team2' as Team , 'example@sqldat.com' as email, 'A' as Groups
UNION SELECT 'Team2' as Team , 'example@sqldat.com' as email, 'B' as Groups
UNION SELECT 'Team2' as Team , 'example@sqldat.com' 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

Произвежда

Team  A                B                C
----- ---------------- ---------------- ----------------
Team1 example@sqldat.com example@sqldat.com example@sqldat.com
Team2 example@sqldat.com example@sqldat.com example@sqldat.com

Вижте работещ пример за Data.SE

В DB, която не поддържа PIVOT, можете вместо това да направите множество съединения към вашата таблица. Въпреки че все пак може да искате, тъй като, както GBN посочи, тъй като не използваме агрегат.

With SampleData AS 
(
SELECT 'Team1' as Team , 'example@sqldat.com' as email, 'A' as Groups
UNION SELECT 'Team1' as Team , 'example@sqldat.com' as email, 'B' as Groups
UNION SELECT 'Team1' as Team , 'example@sqldat.com' as email, 'C' as Groups
UNION SELECT 'Team2' as Team , 'example@sqldat.com' as email, 'A' as Groups
UNION SELECT 'Team2' as Team , 'example@sqldat.com' as email, 'B' as Groups
UNION SELECT 'Team2' as Team , 'example@sqldat.com' 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'

Вижте работещ пример за Data.SE




  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-SQL

  2. Как да комбинирате дата от едно поле с време от друго поле - MS SQL Server

  3. MDX брой във времето (години - не в рамките на една година)

  4. Как да мигрирате задания на SQL сървър от един екземпляр на SQL сървър към друг

  5. SQL Server Azure / 2022 Database Ledger Tables от Linux.