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)
)
、各事業所が唯一のマネージャと1人のエンジニアを持つことができます。私が期待している出力は
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) –