Страницы

Поиск по вопросам

вторник, 4 июня 2019 г.

Разбить строку результата на две в MS SQL

Подскажите решение вот такой вот смарт-задачки: имеем результат выборки

В результате появляется строка, где в двух колонках и FixHours, и AddHours есть значения не равные нулю:
FixHours = 0,5 AddHours = 1,5 CalculatedValue = 16.5
Как ее можно разделить на две, чтобы получить строки:
FixHours = 0,5 AddHours = 0 CalculatedValue = 16.5
FixHours = 0 AddHours = 1,5 CalculatedValue = 16.5
Была идея находить только эту строку, затем искусственно создавать вторую с помощью Union. Но она провалилась, т.к. такие строки в таблице встречаются не один раз. В общем, any ideas?


Ответ

Если порядок не важен, то:
WITH SourceData AS ( SELECT FixHours, AddHours, CalculatedValue FROM SomeTable --тут ваша выборка ) SELECT FixHours, 0, CalculatedValue FROM SourceData WHERE FixHours <> 0 UNION ALL SELECT 0, AddHours, CalculatedValue FROM SourceData WHERE AddHours <> 0 UNION ALL SELECT 0, 0, CalculatedValue FROM SourceData WHERE FixHours = 0 AND AddHours = 0
Если важен - то нужно добавлять rownumber в SourceData, и сортировать результат union по нему.

Комментариев нет:

Отправить комментарий