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

问题描述 投票:0回答:1

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

请查阅。

我的来源是SQL Server 2014

注意:

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

请查阅

关于输入:

ID字段将是常量,但POS字段对于特定ID将是不同的

可以有1到10个这样的POS字段出现[POS字段可以具有1-10的值]。来自POS = 1的DESC1值将转到DESC1,POS2的值将转到desc2,依此类推。

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

INPUT:

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

OUTPUT:

ID|DESC1|desc2|desc3|desc4|desc5|Desc6|desc7|Desc8
1|ItemA|ItemB|Item C|ItemD|ItemE|value-random|Check!A|123456
sql-server sql-server-2014 informatica
1个回答
2
投票

这是简化的,因为我不知道你当前的查询是什么样的,但你可以使用MAX()GROUP BY id。

DEMO

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
© www.soinside.com 2019 - 2024. All rights reserved.