Я работаю над проектом создания SLA для разных заказов. Для этого мне нужно объединить несколько строк в одну строку, хотя бывают случаи, когда она будет более чем на 1 строку. Вот как данные в настоящее время создана:Объединение нескольких строк в одну строку (SQL)
OrderNumber | Stage1 | Stage2 | Stage3 | Stage4 |
=================================================
1 |1/1/2016|*NULL* |*NULL* | *NULL*
1 |*NULL* |2/1/2016|*NULL* | *NULL*
1 |*NULL* |*NULL* |3/1/2016| *NULL*
1 |*NULL* |*NULL* |*NULL* | 4/1/2016
1 |*NULL* |5/1/2016|*NULL* | *NULL*
Путь я надеюсь увидеть данные, как это:
OrderNumber | Stage1 | Stage2 | Stage3 | Stage4 |
=================================================
1 |1/1/2016|2/1/2016|3/1/2016| 4/1/2016
1 |1/1/2016|5/1/2016|*NULL* | *NULL*
ИЛИ
OrderNumber | Stage1 | Stage2 | Stage3 | Stage4 |
=================================================
1 |1/1/2016|2/1/2016|3/1/2016| 4/1/2016
1 |*NULL* |5/1/2016|*NULL* | *NULL*
Есть две проблемы, I см. 1) Объединение нескольких строк в одну строку и 2) Если значение появляется в столбце более одного раза, отображение его в новой строке (в идеале со значениями предыдущих этапов, появляющимися в предыдущих столбцах, но это не требуется).
Самое близкое решение, которое я нашел, это: Merge two rows in SQL, но это не помогло решить эту проблему.
Любая помощь была бы принята с благодарностью.
Редактировать Обновленные теги
, что произойдет, если 1-й этап имеет две не нулевые даты вместо одной? какой из них вы соедините с двумя этапами? –
Возможный дубликат [Объединить несколько строк в одну строку] (http://stackoverflow.com/questions/10553198/merge-multiple-rows-into-a-singlerow) –
Самый простой подход, который я могу придумать, - это назначить номер строки на каждый этап, когда значение не равно нулю. а затем присоединиться к данным на основе rownumber – xQbert