Как преобразовать строки данных в одну строку с помощью Informatica / SQL Server - PullRequest
0 голосов
/ 09 апреля 2019

Как преобразовать диагональные строки в одну строку в SQL Server 2014 для определенного поля идентификатора. Любая помощь будет принята с благодарностью

Пожалуйста, оставьте отзыв.

Мой источник - SQL Server 2014

Примечание:

  1. У меня нет прав на запись в БД, поэтому я не могу создавать функции и т. Д.
  2. У меня есть возможность получить желаемое o / p, либо взяв источник [указанный ниже] в Informatica из SQL Server, что, в свою очередь, является результатом запроса и позволяет достичь требуемого o / p, применяя некоторые преобразования или логику записи. в SQL-сервере -2014. Короче говоря, я могу выполнять логику с помощью Informatica или через SQL Server на самом начальном уровне, чтобы получить желаемое значение o / p.
  3. У меня есть несколько других объединений и столбцов, которые извлекаются из разных таблиц вместе с полями ниже

Пожалуйста, оставьте отзыв

Относительно ввода:

Поле идентификатора будет постоянным, но поле POS будет отличаться для конкретного идентификатора

Может быть от 1 до 10 таких вхождений поля POS [Поле POS может иметь значения от 1 до 10]. Значение DESC1 из POS = 1 перейдет в 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

1 Ответ

2 голосов
/ 09 апреля 2019

Это упрощено, потому что я не знаю, как выглядит ваш текущий запрос, но вы можете использовать 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
...