将行数据转换为SQL Server中的列

敢为恶魔

我有一个场景,其中我有三列多行,我需要在单行中选择它们。下面我附上临时表方案。

CREATE TABLE #Temp
(
  PersonID INT ,
  PhoneType VARCHAR(20) ,
  PhoneNumber VARCHAR(20)
)

INSERT  INTO #Temp
    ( PersonID ,
      PhoneType ,
      PhoneNumber 
    )
    SELECT  1212 ,
            'Business' ,
            '123456789'
    UNION ALL
    SELECT  1212 ,
            'Cell' ,
            '741852963'
    UNION ALL
    SELECT  1212 ,
            'Other' ,
            '987654321'
    UNION ALL
    SELECT  1212 ,
            'Home' ,
            '951357852'

SELECT  *
FROM    #Temp

DROP TABLE #Temp

我需要展示

PersonID|Business|123456789|Cell|741852963|Other|987654321|Home|951357852

有人可以帮忙吗?

我必须将此结果与另一个选择查询结合起来,该怎么办?

菲利克斯·帕米坦(Felix Pamittan)

您可以使用条件聚合:

SQL小提琴

SELECT
    PersonID,
    Business    = MAX(CASE WHEN PhoneType = 'Business' THEN PhoneNumber END),
    Cell        = MAX(CASE WHEN PhoneType = 'Cell' THEN PhoneNumber END),
    Other       = MAX(CASE WHEN PhoneType = 'Other' THEN PhoneNumber END),
    Home        = MAX(CASE WHEN PhoneType = 'Home' THEN PhoneNumber END)
FROM #Temp
GROUP BY PersonID

如果您有未知数量PhoneType的,请执行动态交叉表:

SQL小提琴

DECLARE @sql NVARCHAR(MAX) = ''
SELECT @sql = 
'SELECT
    PersonID' + CHAR(10)

SELECT @sql = @sql +
'   , MAX(CASE WHEN PhoneType = ''' + PhoneType + ''' THEN PhoneNumber END) AS' + QUOTENAME(PhoneType) + CHAR(10)
FROM (SELECT DISTINCT PhoneType FROM #Temp) t

SELECT @sql = @sql +
'FROM #Temp
GROUP BY PersonID'

EXEC sp_executesql @sql

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将某些列转换为行数据

来自分类Dev

SQL Server-Pivot将行转换为列(带有其他行数据)

来自分类Dev

将数据列转换为SQL Server中的数据行

来自分类Dev

如何使用SQL将列数据转换为逗号分隔值的行数据

来自分类Dev

将行数据转换为sqlserver 2008中的列

来自分类Dev

熊猫将行数据转换为列数据

来自分类Dev

如何将列数据转换为行数据

来自分类Dev

如何将列数据转换为行数据?

来自分类Dev

熊猫将行数据转换为列数据

来自分类Dev

如何将列数据转换为行数据

来自分类Dev

使用 Laravel 将行数据转换为列数据

来自分类Dev

将每小时的行数据转换为新列Pandas

来自分类Dev

SQL查询将列数转换为行数

来自分类Dev

如何在SQL Server中将多个行数据转换为列数据

来自分类Dev

将COBOL数据转换为SQL Server

来自分类Dev

使用UNPIVOT和SELECT MAX()将行数据中的SELECT MAX()值转换为列数据

来自分类Dev

如何通过避免Null值将行数据转换为mysql中的列数据

来自分类Dev

将列数据转换为行,SQL Server 2008

来自分类Dev

通过R中的特定行名称将行数据转换为列

来自分类Dev

根据SQL中的数据将行转换为列

来自分类Dev

在MySQL中将行数据转换为列

来自分类Dev

在MySQL中将行数据转换为列

来自分类Dev

oracle中将行数据转换为列

来自分类Dev

将行转换为SQL Server中的常量列?

来自分类Dev

将列转换为SQL Server 2012中的行

来自分类Dev

将多行转换为SQL Server中的多列

来自分类Dev

将(文本)行转换为SQL Server 2014中的列

来自分类Dev

将 INT 列转换为 SQL Server 中的日期时间

来自分类Dev

根据 SQL Server 中的条件将列转换为行

Related 相关文章

热门标签

归档