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

Привет!

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

27d4850542384fe7b112f54fe1517550.png

В результате появляется строка, где в двух колонках и 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? Я уже голову сломал.
  • Вопрос задан
  • 1525 просмотров
Решения вопроса 1
@Noxy
увлекаюсь SQL
А что с union не так?

например:
CREATE TABLE #Hours (FixHours INT, AddHours INT, CalCulatedValue INT)
    INSERT INTO #Hours VALUES (10,0,14),(5,0,14),(5,1,16),(0,5,17)
    
    SELECT * FROM #Hours h
    
    SELECT FixHours, AddHours, CalCulatedValue FROM #Hours h 
            WHERE NOT (h.FixHours > 0  AND h.AddHours > 0)
    UNION ALL 
    SELECT FixHours, 0, h.CalCulatedValue FROM #Hours h
            WHERE h.FixHours > 0  AND h.AddHours > 0
    UNION ALL 
    SELECT 0, AddHours, h.CalCulatedValue FROM #Hours h
             WHERE h.FixHours > 0  AND h.AddHours > 0
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@app25
case в помощь
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы