1
MSSQL 데이터베이스에 Office Person 관계 데이터를 저장하는 테이블이 있습니다. 테이블 구조는 표 값SQL Server - 열을 행으로 바꾸기
E1F5ECA9-7D5A-4580-AA7D-0003A582F286|E1F5ECA9-7D5A-3580-AA7D-0003A582F286|Manager
E1F5ECA9-7D5A-4580-AA7D-0003A582F286|E1F5ECA9-7D5A-3580-AA7D-0003A582F286|Engineer
E2F5ECA9-7D5A-4580-AA7D-0003A582F286|E2F5ECA9-7D5A-3580-AA7D-0003A582F286|Manager
E2F5ECA9-7D5A-4580-AA7D-0003A582F286|E2F5ECA9-7D5A-3580-AA7D-0003A582F286|Engineer
내가 얻고 싶은 것은 각 사무실은 단지 하나의 관리자와 하나의 엔지니어를 가질 수있다을해야합니다
CREATE TABLE (
OfficeID UNIQUEIDENTIFIER
PersonID UNIQUEIDENTIFIER
Designation VARCHAR(20)
)
입니다. 예상 출력은
OfficeID|Manager ID| Engineer ID|
E1F5ECA9-7D5A-4580-AA7D-0003A582F286|E1F5ECA9-7D5A-3580-AA7D-0003A582F286| E1F5ECA9-7D5A-3580-AA7D-0003A582F286
E2F5ECA9-7D5A-4580-AA7D-0003A582F286|E2F5ECA9-7D5A-3580-AA7D-0003A582F286|E2F5ECA9-7D5A-3580-AA7D-0003A582F286
어떻게이 형식으로 데이터를 가져올 수있는 쿼리를 구성 할 수 있습니까?
select
OfficeId
, ManagerId = max(case when Designation = 'Manager' then PersonId end)
, EngineerId = max(case when Designation = 'Engineer' then PersonId end)
from t
group by OfficeId
또는 pivot()
를 사용 : 조건부 집계를 사용하여
감사합니다,
존
[MS SQL의 행을 행으로 변환] (https://stackoverflow.com/questions/35451934/convert-rows-to-columns-in-ms-sql)의 가능한 복제본 –