关于sqlserver求环比同比问题

问下各位大佬,我现在写了一个sql的环比同比这2个字段但是得不到值,我是哪块没写对

123788.png

SELECT city_code 城市,

sum(case when left(week_start,7)='${month}' 

then average_transaction_price

end) 当月商品住宅成交均价,

sum(case when left(week_start,7)='${month}' 

then depolarization_cycle 

end) 当月库存去化周期,

sum(case when left(week_start,4)=left('${month}',4) 

then average_transaction_price * number_of_transactions

end) 当年月商品住宅成交额,

sum(case when left(week_start,7)='${month}'

then average_transaction_price * number_of_transactions

end) 当月商品住宅成交额,

sum(case when left(week_start,4)= CONVERT(varchar(4),DATEADD(year,-1,'${month}'+'-01'), 20)

then average_transaction_price * number_of_transactions 

end) 去年商品住宅成交额,

sum(case when left(week_start,7)= CONVERT(varchar(7),DATEADD(month,-1,'2021-01'+'-01'), 20)

then average_transaction_price * number_of_transactions 

end) 上月商品住宅成交额

FROM [dbo].[t_volume_price_sales_information]

where 1=1

 ${if(city_code=='x00000',""," and city_code = '"+city_code+"'")} 

and enable = 1

and (left(week_start,7) = '2021-07 ') or (left(week_start,7) =CONVERT(varchar(7),DATEADD(month,-1,'2021-07'+'-01'), 20) )

and

(left(week_start,4) = '2021 ') or (left(week_start,4) = CONVERT(varchar(4),DATEADD(year,-1,'2021-07'+'-01'), 20) )

group by city_code

雨后的绝望 发布于 2021-7-24 14:37
1min目标场景问卷 立即参与
回答问题
悬赏:7 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
JackRenLv6初级互助
发布于2021-7-26 10:04

where 1=1

 ${if(city_code=='x00000',""," and city_code = '"+city_code+"'")} 

and enable = 1

and left(week_start,4)>='2020'

试试使用这个查询条件,默认查出两年的数据,然后再上查询中使用你的case when判断是今年的还是去年数据。

  • 蒜毫炒肉 蒜毫炒肉(提问者) 您好问下只要是求环比同比如果字段是字符串类型必须得用convert转换下日期类型才能出数据吗?sqlserver和mysql都需要这样转换吗?还有只要是求环比和同比是不是底下where条件必须给2个时间才会出数据?
    2021-07-26 10:26 
  • JackRen JackRen 回复 蒜毫炒肉(提问者) 1、还有只要是求环比和同比是不是底下where条件必须给2个时间才会出数据? where条件中不一定要把两年的数据查出来,你也可以只查当年的数据,上面获取上一年的值时用子查询也可以。
    2021-07-26 11:00 
最佳回答
0
gloria5Lv6见习互助
发布于2021-7-24 18:10

可以先查询一下where过滤之后有去年和上月数据没,验证一下where条件

  • 蒜毫炒肉 蒜毫炒肉(提问者) 您好问下只要是求环比同比如果字段是字符串类型必须得用convert转换下日期类型才能出数据吗?sqlserver和mysql都需要这样转换吗?还有只要是求环比和同比是不是底下where条件必须给2个时间才会出数据?
    2021-07-26 10:25 
  • 3关注人数
  • 454浏览人数
  • 最后回答于:2021-7-26 10:04
    请选择关闭问题的原因
    确定 取消
    返回顶部