Подскажите решение вот такой вот смарт-задачки: имеем результат выборки
В результате появляется строка, где в двух колонках и 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 по нему.
Комментариев нет:
Отправить комментарий