#sql #sql-server #oracle
#sql #sql-сервер #Oracle
Вопрос:
Как я могу преобразовать DATEADD(week,-4,GETDATE())
в предложении where (в Oracle SQL)
Пытаюсь получить данные за предыдущие 4 недели
SELECT DISTINCT LOWER(C.EMAIL) AS EMAIL, FOI.ORDER_ID AS ORDERS
FROM MTEPWDATA_CAN.MTEP_FACT_ORDER_ITEMS FOI
LEFT JOIN MTEPWDATA_CAN.MTEP_DIM_DAY D
ON FOI.ORDER_DATE_SKEY = D.DAY_SKEY
LEFT JOIN MTEPWDATA_CAN.MTEP_DIM_CUSTOMER C
ON FOI.CUSTOMER_SKEY = C.CUSTOMER_SKEY
WHERE ((QUANTITY_ORDERED > 0
AND FOI.FULFILLMENT_TYPE = 'SCHEDULED_HOME'))
AND DATEADD(week, -4, GETDATE())
Ответ №1:
В Oracle вы бы использовали:
select sysdate - interval '28' day
Или, если вы предпочитаете:
select sysdate - 4 * interval '7' day
Комментарии:
1. Могу ли я использовать то же самое в предложении where?
2. @Maddy . . . Да . . . при условии, что вы включаете соответствующее сравнение.
3. Я попробовал это в приведенном ниже запросе, и это почему-то не работает. Не могли бы вы, пожалуйста, помочь мне с этим?
4. ВЫБЕРИТЕ ОТДЕЛЬНЫЙ НИЖНИЙ (C.EMAIL) В КАЧЕСТВЕ электронной почты, FOI. ИДЕНТИФИКАТОР ЗАКАЗА КАК ЗАКАЗЫ ИЗ MTEPWDATA_CAN.MTEP_FACT_ORDER_ITEMS ДЛЯ ЛЕВОГО ВНЕШНЕГО СОЕДИНЕНИЯ MTEPWDATA_CAN.MTEP_DIM_DAY D На FOI. ORDER_DATE_SKEY = D.DAY_SKEY ЛЕВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ MTEPWDATA_CAN.MTEP_DIM_CUSTOMER C На FOI.CUSTOMER_SKEY = C.CUSTOMER_SKEY ГДЕ ( ( QUANTITY_ORDERED> 0 И FOI.FULFILLMENT_TYPE=’SCHEDULED_HOME’ ) ) И DATEADD(неделя,-4, GETDATE())
5. @Maddy . . . Как я уже сказал, вам нужно соответствующее сравнение для даты. Выражение просто возвращает дату.