Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何在行上的on列中显示客户端的所有三个不同数字(工作、家庭、单元格)?_Sql_Sql Server_Tsql - Fatal编程技术网

Sql 如何在行上的on列中显示客户端的所有三个不同数字(工作、家庭、单元格)?

Sql 如何在行上的on列中显示客户端的所有三个不同数字(工作、家庭、单元格)?,sql,sql-server,tsql,Sql,Sql Server,Tsql,我有非常独特的要求显示电话号码从3个不同的列到一列 我从我的sql查询中得到以下结果,该查询为我提供了系统中当前所有活动客户端的联系号码 我想把所有不同的电话列转换成一列 请帮忙 这是我的查询,我从中得到以上结果 select c.CLIENT_ID as "Client No", c.[HOME_PHONE] as "Home Phone", c.[WORK_PHONE] as "Work Phone", c.[WORKEXT] as "Work

我有非常独特的要求显示电话号码从3个不同的列到一列

我从我的sql查询中得到以下结果,该查询为我提供了系统中当前所有活动客户端的联系号码

我想把所有不同的电话列转换成一列

请帮忙

这是我的查询,我从中得到以上结果

    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

我没有数据,可以测试一下吗-

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

我没有数据,可以测试一下吗-

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

我问了同样的问题,但谁需要这个结果并不在乎哪个电话号码是哪个。他们只需要在同一个客户前面三行三个电话号码,对不起,还有分机。请使用unpivot获得想要的结果。嗯,谢谢,我可以在简单的表/查询中使用unpivot。既然我的查询已经有点复杂了,那么如何在上面进行Unpivot呢?请使用guid。不管源查询有多复杂,只要将所有代码放在unpivott中的源表中,谢谢你们的快速回复@我认为你是对的,但问题是我已经有了8个不同的问题,像上面一样,涵盖了所有可能的选择不同的办公室,不同的,服务等等,这些都是为了迁移,所以可能创建表或视图,然后在上面执行unpivot太耗时了。我问了同样的问题,但谁需要这个结果并不关心哪个电话号码是哪个。他们只需要在同一个客户前面三行三个电话号码,对不起,还有分机。请使用unpivot获得想要的结果。嗯,谢谢,我可以在简单的表/查询中使用unpivot。既然我的查询已经有点复杂了,那么如何在上面进行Unpivot呢?请使用guid。不管源查询有多复杂,只要将所有代码放在unpivott中的源表中,谢谢你们的快速回复@我认为你是对的,但问题是我已经有了8个不同的查询,如上面所述,以涵盖所有可能的选项不同的办公室,不同的服务等。这些都是为了迁移,所以创建表或视图,然后再在上面执行unpivot,可能太耗时了。