/ /クライアントの3つの異なる番号(Work、Home、Cell)を列の列に表示する方法は? - sql、sql-server、tsql

どのように行の上の列にクライアントの3つの異なる番号(仕事、ホーム、セル)を表示するには? - sql、sql-server、tsql

私は3つの異なる列から1つの列に電話番号を表示する非常にユニークな要件があります

私は私のSQLクエリから結果を次のように取得しています。私は現在、システム内のすべてのアクティブなクライアントの連絡先番号を取得しています。

ここに画像の説明を入力

私は電話のすべての異なる列を1つの列に変換したいと思います。

ここに画像の説明を入力

助けてください。

私が上の結果を得ている私の質問がここにあります

    select
c.CLIENT_ID as "Client No",
c.[HOME_PHONE] as "Home Phone",
c.[WORK_PHONE] as "Work Phone",
c.[WORKEXT] as "Work Ext",
c.[CCELL] as "Cell Phone",
"" as Assignment_ID,
"Office-Paris’ as "Office",
"1F65781E-78F6" as Owner
FROM CLIENTS c
left join    (
select  row_number() over (
partition by CLIENT_ID
order by startdate desc) as rn
,       CLIENT_ID
,       STATUS
,STOPDATE
,       DEPT_ID
from    CLTSTATES
where   STARTDATE <= "2016-09-08"and DEPT_ID="R0000000001"
) h
on      c.CLIENT_ID = h.CLIENT_ID
and h.rn = 1 -- Only last row
where   h.STATUS = "A"
order by c.CLIENT_ID

回答:

回答№1は2

私はデータを持っていないので、この作品は、テストしてください -

select
[Client No],
[Phone],
[Assignment_ID],
[Office],
[Owner]
from (
select
c.[CLIENT_ID] as "Client No",
c.[HOME_PHONE] as "Home Phone",
c.[WORK_PHONE] as "Work Phone",
c.[WORKEXT] as "Work Ext",
c.[CCELL] as "Cell Phone",
"" as Assignment_ID,
"Office-Paris" as "Office",
"1F65781E-78F6" as Owner
FROM CLIENTS c
left join    (
select  row_number() over (
partition by CLIENT_ID
order by startdate desc) as rn
,       CLIENT_ID
,       STATUS
,STOPDATE
,       DEPT_ID
from    CLTSTATES
where   STARTDATE <= "2016-09-08"and DEPT_ID="R0000000001"
) h
on      c.CLIENT_ID = h.CLIENT_ID
and h.rn = 1 -- Only last row
where   h.STATUS = "A"
) x
unpivot
( Phone for different_location in ([Home Phone], [Work Phone], [Work Ext], [Cell Phone])
) u
order by CLIENT_ID

回答№2の場合は1
Select ClientNo, phone = HomePhone, AssignmentId, Office, Guid From Blah Blah
union all
Select ClientNo, phone = WorkPhone, AssignmentId, Office, Guid From Blah Blah
union all
Select ClientNo, phone = CellPhone, AssignmentId, Office, Guid From Blah Blah


-- Etc.