Sql server 如何通过informatica/SQL Server将数据行转换为单行

Sql server 如何通过informatica/SQL Server将数据行转换为单行,sql-server,sql-server-2014,informatica,Sql Server,Sql Server 2014,Informatica,如何在SQL Server 2014中将特定ID字段的对角线行转换为单行。任何帮助都将不胜感激 请复习 我的来源是SQL Server 2014 注: 我没有DB的写权限,因此无法创建函数等 我可以选择通过从SQL Server获取Informatica中的源[如下所示]来获得所需的o/p,这是查询的结果,并通过在SQL Server-2014中应用一些转换或写入逻辑来实现所需的o/p。因此,简而言之,我可以使用Informatica执行逻辑,也可以在初始级别通过SQL Server本身来获得所

如何在SQL Server 2014中将特定ID字段的对角线行转换为单行。任何帮助都将不胜感激

请复习

我的来源是SQL Server 2014

注:

  • 我没有DB的写权限,因此无法创建函数等
  • 我可以选择通过从SQL Server获取Informatica中的源[如下所示]来获得所需的o/p,这是查询的结果,并通过在SQL Server-2014中应用一些转换或写入逻辑来实现所需的o/p。因此,简而言之,我可以使用Informatica执行逻辑,也可以在初始级别通过SQL Server本身来获得所需的o/p
  • 我还从不同的表中提取了其他几个连接和列,以及下面的字段
  • 请复习

    关于投入:

    ID字段将保持不变,但对于特定ID,POS字段将不同

    POS字段可以出现1到10次这种情况[POS字段可以有1到10的值]。POS=1的DESC1值将转到DESC1,POS 2的值将转到desc2,依此类推

    现在我只给出了8次,但实际上有10次

    输入:

    ID|POS|DESC1|desc2|desc3|desc4|desc5|desc6|desc7|desc8|
    1|1|ItemA|null|null|null|null|null|null|null                        
    1|2|null|ItemB|null|null|null|null|null|null                        
    1|3|null|null|Item C|null|null|null|null|null           
    1|4|null|null|null|ItemD|null|null|null|null                
    1|5|null|null|null|null|ItemE|null|null|null                    
    1|6|null|null|null|null|null|value-random|null|null 
    1|7|null|null|null|null|null|null|Check!A|null
    1|8|null|null|null|null|null|null|null|123456
    
    输出:

    ID|DESC1|desc2|desc3|desc4|desc5|Desc6|desc7|Desc8
    1|ItemA|ItemB|Item C|ItemD|ItemE|value-random|Check!A|123456
    

    这被简化了,因为我不知道您当前的查询是什么样子的,但是您可以使用
    MAX()
    groupby
    id

    SELECT 
      ID,
      MAX(desc1) AS [desc1],
      MAX(desc2) AS [desc2],
      MAX(desc3) AS [desc3],
      MAX(desc4) AS [desc4],
      MAX(desc5) AS [desc5],
      MAX(desc6) AS [desc6],
      MAX(desc7) AS [desc7],
      MAX(desc8) AS [desc8]
    FROM dbo.YourTable
    GROUP BY ID
    

    这被简化了,因为我不知道您当前的查询是什么样子的,但是您可以使用
    MAX()
    groupby
    id

    SELECT 
      ID,
      MAX(desc1) AS [desc1],
      MAX(desc2) AS [desc2],
      MAX(desc3) AS [desc3],
      MAX(desc4) AS [desc4],
      MAX(desc5) AS [desc5],
      MAX(desc6) AS [desc6],
      MAX(desc7) AS [desc7],
      MAX(desc8) AS [desc8]
    FROM dbo.YourTable
    GROUP BY ID
    

    某些行是否可能不止一个非空的列?嗨,不是。每行中只出现一次。rest all将为空。是否有可能某些行将有不止一个不为空的列?嗨,不是。每行中只出现一次。其余的都将为空