[英]Partition by user defined dates sql
I have a table which gives unit sales of different items by day. 我有一张桌子,可以按日列出不同商品的单位销售额。 I want to sum the sales for a number of user-defined (effectively arbitrary, no way to specify directly from the data) periods.
我想对多个用户定义(实际上是任意的,无法直接从数据中指定)期间的销售额进行汇总。
I'm trying to do this by creating a field that specifies whether what period date is within, then I can group by this. 我正在尝试通过创建一个字段来指定此日期,该字段是否指定在哪个日期范围内,然后可以对此进行分组。 However my code is giving me the error "ORA-00923: FROM keyword not found where expected".
但是我的代码给我错误“ ORA-00923:在期望的位置找不到FROM关键字”。
MY CODE: 我的密码:
select
SUM(UNIT_SALES),
PERIOD =
CASE
WHEN DAY_DATE >= TO_DATE('04/07/2013', 'DD/MM/YYYY') AND DAY_DATE <= TO_DATE('26/09/2013', 'DD/MM/YYYY') THEN 'Start of Period of pre_activity'
WHEN DAY_DATE >= TO_DATE('27/09/2013', 'DD/MM/YYYY') AND DAY_DATE <= TO_DATE('01/04/2014', 'DD/MM/YYYY') THEN 'Start of Period of pre_activity'
WHEN DAY_DATE >= TO_DATE('14/05/2014', 'DD/MM/YYYY') AND DAY_DATE <= TO_DATE('21/09/2014', 'DD/MM/YYYY') THEN 'Start of Period of pre_activity'
ELSE 'NO PERIOD ASSIGNED'
END
FROM MY_SALES_DAILY
GROUP BY PERIOD
ORDER BY PERIOD
How can I achieve this sum for user-defined periods? 如何在用户定义的时间段内获得该总和?
Your syntax is incorrect. 您的语法不正确。
PERIOD =
is incorrect. PERIOD =
不正确。 See the corrected SQL below. 请参阅下面的更正的SQL。
select
SUM(UNIT_SALES),
CASE
WHEN DAY_DATE >= TO_DATE('04/07/2013', 'DD/MM/YYYY') AND DAY_DATE <= TO_DATE('26/09/2013', 'DD/MM/YYYY') THEN 'Start of Period of pre_activity'
WHEN DAY_DATE >= TO_DATE('27/09/2013', 'DD/MM/YYYY') AND DAY_DATE <= TO_DATE('01/04/2014', 'DD/MM/YYYY') THEN 'Start of Period of pre_activity'
WHEN DAY_DATE >= TO_DATE('14/05/2014', 'DD/MM/YYYY') AND DAY_DATE <= TO_DATE('21/09/2014', 'DD/MM/YYYY') THEN 'Start of Period of pre_activity'
ELSE 'NO PERIOD ASSIGNED'
END AS PERIOD
FROM DW_MASTER_SALES_DAILY
GROUP BY CASE
WHEN DAY_DATE >= TO_DATE('04/07/2013', 'DD/MM/YYYY') AND DAY_DATE <= TO_DATE('26/09/2013', 'DD/MM/YYYY') THEN 'Start of Period of pre_activity'
WHEN DAY_DATE >= TO_DATE('27/09/2013', 'DD/MM/YYYY') AND DAY_DATE <= TO_DATE('01/04/2014', 'DD/MM/YYYY') THEN 'Start of Period of pre_activity'
WHEN DAY_DATE >= TO_DATE('14/05/2014', 'DD/MM/YYYY') AND DAY_DATE <= TO_DATE('21/09/2014', 'DD/MM/YYYY') THEN 'Start of Period of pre_activity'
ELSE 'NO PERIOD ASSIGNED'
END
ORDER BY PERIOD
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.