公式报错

where a.tradedate >=dateadd(year,-1,DATEADD(mm,DATEDIFF(mm,0,'2017-04-13'),0))
and a.tradedate<=dateadd(year,-1,'2017-04-13')
报错dateadd标识符无效  应该怎么写啊

FineReportwlkj 发布于 2017-4-24 13:40
悬赏:2 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共9回答
最佳回答
0
小龙发布于2017-4-24 13:40(编辑于 2023-9-6 09:34)
555
最佳回答
0
cherishdqy发布于2017-4-24 13:49(编辑于 2023-9-6 09:34)
555
  • wlkj wlkj(提问者)

    oracle数据库
    回复
    2017-04-24 14:06 
  • wlkj wlkj(提问者)
    1. select
    2.   a.tradeid,a.tradedate,
    3.    a.clienttype,b.ticketmodelprice,d.ticketmodelname,c.ticketcount,c.usercount,c.barcode,
    4.   sum(c.ticketmodelprice* c.ticketcount) as paysumdp
    5. from tkt_trademain a
    6. left join tkt_tradedetail b on a.tradeid=b.tradeid
    7. left join tkt_checkdetail c on b.id=c.tradedetailrecid
    8. left join sys_ticketmodel d on b.ticketmodelcode=d.ticketmodelcode
    9. where a.tradedate >=dateadd(year,-1,DATEADD(mm,DATEDIFF(mm,0,\'2017-04-13\'),0))
    10. and a.tradedate<=dateadd(year,-1,\'2017-04-13\')
    11. and
    12. a.parkcode in (\'004001\',\'004002\',\'004003\',\'004004\',\'004006\')
    13. and a.billtype=\'01\'
    14. and d.ticketmodelcode in (\'2052\',\'1498\',\'2049\',\'1911\',\'1912\',\'2047\',\'1909\',\'1910\',\'2048\'--大门
    15. ,\'1510\',\'1132\',\'2051\',\'2050\',\'1121\',\'1845\',\'1846\',\'1091\',\'1087\',\'2053\',\'1478\',\'2054\',\'1151\',--游船
    16. \'1211\',\'1284\',\'1212\',--龙心
    17. \'2073\',\'2072\',\'2069\',\'2068\',\'2067\',\'2071\',\'2070\',\'2091\',\'2090\')
    18. group by a.tradeid,a.tradedate,a.clienttype,b.ticketmodelprice,d.ticketmodelname,c.ticketcount,c.usercount,c.barcode
    19. order by
    20. d.ticketmodelname
    复制代码
    回复
    2017-04-24 14:07 
最佳回答
0
Poseidon发布于2017-4-24 13:51(编辑于 2023-9-6 09:34)
555
最佳回答
0
wlkj发布于2017-4-24 14:06(编辑于 2023-9-6 09:34)
555
  • 小龙 小龙

    Oracle 用 add_months来算。

    select sysdate,add_months(sysdate,12) from dual;  加1年。
    回复
    2017-04-24 14:13 
最佳回答
0
wlkj发布于2017-4-24 14:07(编辑于 2023-9-6 09:34)
555
最佳回答
0
小龙发布于2017-4-24 14:13(编辑于 2023-9-6 09:34)
555
  • wlkj wlkj(提问者)

    比如,今天的日期是2017.4.24,那我的去年同期累计就是去年的2016.4.1-2016.4.24的数据,我要求的就是这个数据

    where a.tradedate >=ADD_MONTHS(LAST_DAY(to_date(\'${营业日期}\',\'yyyy-mm-dd\')) + 1, -1)
    and a.tradedate< to_date(\'${营业日期}\',\'yyyy-mm-dd\')+1
    这个语句是当月累计,就是2017.4.1到2017.4.24的数据,这个我弄出来了,但是我不知道去年同期的怎么写

    回复
    2017-04-24 14:25 
最佳回答
0
wlkj发布于2017-4-24 14:25(编辑于 2023-9-6 09:34)
555
  • 小龙 小龙
    给你一个思路:
    where a.tradedate >=ADD_MONTHS(to_date(\'${营业日期}\',\'yyyy-mm-dd\')) ,-12)
    and a.tradedate<to_date( to_char((\'${营业日期}\'))-1 || to_char(sysdate,\'MM-DD\'),\'yyyy-mm-dd\')

    回复
    2017-04-24 15:07 
最佳回答
0
小龙发布于2017-4-24 15:07(编辑于 2023-9-6 09:34)
555
最佳回答
0
wlkj发布于2017-4-24 16:12(编辑于 2023-9-6 09:34)
555
  • 小龙 小龙

    亲,你照着我上面的思路和写法,自己在oracle里面试试看,能不能跑出数据来啊。
    把营业日期参数,换成日期的数据,看看是不是有问题。
    回复
    2017-04-24 13:40 
  • 0关注人数
  • 525浏览人数
  • 最后回答于:2017-4-24 16:12
    活动推荐 更多
    热门课程 更多
    返回顶部