为什么我算的同比会出现这么多条重复日期的数据啊

SELECT CONVERT

( VARCHAR ( 10 ), c.InputTime, 23 ) AS 对比年月,

c.CONTRACTSUM AS 本月金额,

d.CONTRACTSUM AS 去年同期金额,

CASE

WHEN d.CONTRACTSUM IS NULL 

OR d.CONTRACTSUM= 0 THEN

'无穷大' ELSE CAST (

CAST (

( isnull( c.CONTRACTSUM, 0 ) - isnull( d.CONTRACTSUM, 0 ) ) * 100 / isnull( d.CONTRACTSUM, 0 ) AS DECIMAL ( 10, 2 ) 

) AS VARCHAR ( 50 ) 

) + '%' 

END AS 同比 

FROM

dbo.outCONTRACT c

LEFT JOIN (

SELECT

a.CONTRACTSUM AS CONTRACTSUM,

a.InputTime AS lsInputTime,

b.InputTime AS InputTime 

FROM

dbo.outCONTRACT a

JOIN dbo.outCONTRACT b ON a.InputTime= DateAdd( YEAR, - 1, b.InputTime ) 

) d ON c.InputTime= d.InputTime 


image.png

用户K0035705 发布于 2020-11-10 14:16 (编辑于 2020-11-10 14:18)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共1回答
最佳回答
0
4488Lv5初级互助
发布于2020-11-10 14:41

dbo.outCONTRACT c

你这张表里有多少条重复日期啊

  • 用户K0035705 用户K0035705(提问者) 重复日期确实有,但是没这么多啊,比如说这个截图2016-11-24 只有三条,现在显示9条
    2020-11-10 14:54 
  • 4488 4488 回复 用户K0035705(提问者) left join 后面的呢
    2020-11-10 15:15 
  • 4488 4488 回复 用户K0035705(提问者) 你可以试下这条sql, 我也不知道你那边表是什么情况,但是算同比的话执行一次left join 就可以了,没必要用两次
    2020-11-10 15:25 
  • 4488 4488 回复 用户K0035705(提问者) SELECT a.InputTime AS lsInputTime, a.CONTRACTSUM AS CONTRACTSUM, b.InputTime AS lsInputTime, b.CONTRACTSUM AS CONTRACTSUM, CASE WHEN b.CONTRACTSUM IS NULL OR b.CONTRACTSUM= 0 THEN \'无穷大\' ELSE CAST ( CAST ( ( isnull( a.CONTRACTSUM, 0 ) - isnull( b.CONTRACTSUM, 0 ) ) * 100 / isnull( b.CONTRACTSUM, 0 ) AS DECIMAL ( 10, 2 ) ) AS VARCHAR ( 50 ) ) + \'%\' END AS 同比 FROM dbo.outCONTRACT a left JOIN dbo.outCONTRACT b ON a.InputTime= DateAdd( YEAR, - 1, b.InputTime )
    2020-11-10 15:25 
  • 4488 4488 回复 用户K0035705(提问者) 加一个分组然后sum啊
    2020-11-10 15:37 
  • 2关注人数
  • 473浏览人数
  • 最后回答于:2020-11-10 14:41
    请选择关闭问题的原因
    确定 取消
    返回顶部