Запросы на случай, когда заявление - PullRequest
0 голосов
/ 19 ноября 2011

Во время вставки заявления case, когда оратор автоматически вставит еще один '0' после любого фиксированного числа, из-за моего случая, когда.

Например:

INSERT INTO test
            (test_date,
             testno,
             hours)
 SELECT '20-OCT-2010',
       '1234',
       CASE
         WHEN Extract(DAY FROM( endtime - starttime )) >= 1 THEN (
         Extract(DAY FROM(
                         endtime - starttime ))
         * 24 + Extract
         (HOUR FROM(
       endtime - starttime
       )) )
         WHEN starttime IS NULL
              AND endtime IS NULL THEN 0
         ELSE ( Extract(HOUR FROM( endtime - starttime )) )
       END
       ||''
       || CASE
            WHEN endtime IS NULL
                 AND starttime IS NULL THEN 0
            ELSE Extract(MINUTE FROM ( endtime - starttime )) / 60
          END AS hours
FROM   testtime 

Мои результатывыполняется из приведенного выше оператора:

Test_Date         TestNo           Hours
20-OCT-2010        1234            140

Ожидаемые результаты:

Test_Date         TestNo           Hours
20-OCT-2010        1234            14

Мой тип данных для часов - число (4,2) Моя ошибка связана с тем, что время начала и время окончаниядля минуты ноль, он будет автоматически добавлять '0' за ним.Даже если я изменю '0' на ноль, он все равно добавит 0.

Могу ли я узнать, есть ли другой способ разместить значение '0'?

Спасибо

1 Ответ

2 голосов
/ 19 ноября 2011

Вместо того, чтобы объединять число часов и количество минут, деленное на шестьдесят, вы должны добавить их.Например, 3 часа и 0 минут - это 3 + 0 = 3 часов, а не 3 || 0 = 30 часов.

Другими словами, измените свой ||''|| на +.

...