取同期和上期数据

SqlServer
要取的数据:deal_qty
数据库表名:dc_market_vol_city_f
日期字段:month_date

两条SQL怎么写?

FineReport 孟祥运 发布于 2019-2-20 15:45
1min目标场景问卷 立即参与
回答问题
悬赏:4 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共1回答
最佳回答
1
刘牛牛Lv3见习互助
发布于2019-2-20 16:01(编辑于 2019-2-20 16:09)

https://blog.csdn.net/weixin_40439880/article/details/78677689这个里面有可以参考的



SELECT  T.OrderDate,T.数量,s.数量,a.数量

 from 

(

SELECT OrderDate,SUM(数量) AS 数量 FROM OrderTable 

)t

left join 

(

SELECT OrderDate,SUM(数量) as 数量 FROM OrderTable 

)s on YEAR(t.OrderDate)=YEAR(DATEADD(YEAR,-1,s.OrderDate)) AND MONTH(t.OrderDate)=MONTH(s.OrderDate)AND DAY(t.OrderDate)=DAY(s.OrderDate)  -- 同期

left join 

(

SELECT OrderDate,SUM(数量) as 数量  FROM OrderTable 

)a 

on YEAR(t.OrderDate)=YEAR(a.OrderDate)

AND MONTH(t.OrderDate)=MONTH(DATEADD(MONTH,-1,a.OrderDate))AND DAY(t.OrderDate)=DAY(a.OrderDate)   -- 上期


  • 孟祥运 孟祥运(提问者) 我数据库里面日期字段是month_date,把orderdate全部替换,是吗? 还有,[Microsoft][SQL Server Native Client 10.0][SQL Server]从字符串转换日期和/或时间时,转换失败。 我数据库里的日期的数据类型因为某些需求是varchar格式
    2019-02-20 16:25 
  • 刘牛牛 刘牛牛 回复 孟祥运(提问者) 是的,你首先把orderdate全部替换成month_date
    2019-02-20 16:28 
  • 刘牛牛 刘牛牛 回复 孟祥运(提问者) 然后对month_date格式转换为日期格式CONVERT(varchar(100), month_date, 120)
    2019-02-20 16:32 
  • 孟祥运 孟祥运(提问者) 回复 刘牛牛 还是无法转换,数据库里的month_date只有年月(201902,201901)
    2019-02-20 16:35 
  • 刘牛牛 刘牛牛 回复 孟祥运(提问者) 好的,我改一下我的sql,一会发给你
    2019-02-20 16:37 
  • 2关注人数
  • 1244浏览人数
  • 最后回答于:2019-2-20 16:09
    请选择关闭问题的原因
    确定 取消
    返回顶部