1. SQL / Говнокод #1149

    −857.4

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    select *
    from INV_CARD
    where to_char (dt_reg, 'MM') < TO_CHAR(SYSDATE, 'MM')
    	AND (DT_OUT IS NULL OR to_char (dt_OUT, 'MM') = TO_CHAR(SYSDATE, 'MM'))
    	AND ID_FA_TYPE NOT IN (SELECT ID_FA_TYPE FROM FA_TYPE WHERE CODE = '17')
    	AND ID_FA_STATUS IN (SELECT ID_FA_STATUS FROM FA.V_FA_STATUS WHERE IS_ACCOUNTING = 1)
    	AND STATUS = 1
    	AND GLN.ACC_OPER.GET_ACC1_ACC2(ID_AMORT_ACC) LIKE '01%'

    (PL/SQL)
    очень понравилось сравнение дат, ну и использование констант тоже зачет

    Запостил: guest, 04 Июня 2009

    Комментарии (4) RSS

    • что не так со сравнением дат?
      Ответить
      • Видимо, используется функция to_char, когда можно использовать функцию extract, которая работает быстрее:
        extract(month from dt_reg) ....
        Ответить
      • Месяцы-то сравнили, а годы забыли - наверно это имелось в виду
        Ответить
    • а что не так с использованием констант? Если таблица ID_FA_TYPE в тысячи раз меньше таблицы INV_CARD, то решение хорошее.
      Ответить

    Добавить комментарий