SQL Query works in Microsoft Query, not in Microsoft Excel -
i have complex sql query seems having trouble translating correctly microsoft excel's data connection.
this code works when pasted in microsoft query, return excel, excel gives , won't fill sheet data. think stopped working when added left outer join pieces ensure had oldest skittypes in 2 groups of skittpes, thing complicated i'm not entirely sure.
left outer join table2 b2 (nolock) on (a.actingnumber = b2.actingnumber , b.actingnumber = b2.actingnumber , b2.skittype in ('180','184','185') ) left outer join table2 b3 (nolock) on (a.actingnumber = b3.actingnumber , b.actingnumber = b3.actingnumber , b3.skittype in ( '980','984','985') )
and full query: declare @clipid varchar(15) set @clipid = 'bus'
declare @mnth int declare @bgdate varchar(8) declare @enddate varchar(8) declare @prvmnth int set @mnth = (select max(mnth) table1) set @mnth = (left(replace(convert(varchar(10),dateadd(mm, -5, convert(varchar(10),@mnth,120) + '01'),120),'-',''),6)) set @bgdate = convert(varchar(8), @mnth, 120) + '01' set @enddate = replace(convert(varchar(10),dateadd(dd, -1, dateadd(mm, 6, convert(smalldatetime, @bgdate))),120),'-','') set @prvmnth = (left(replace(convert(varchar(10),dateadd(mm, -1, convert(varchar(10),@mnth,120) + '01'),120),'-',''),6)) declare @mnth2 int declare @delq_mnth char(8) declare @l_monthenddate datetime set @mnth2 = left(replace(convert(varchar(10),dateadd(mm, 4, convert(varchar(10), @mnth,120) + '01'),120),'-',''),6) set @delq_mnth = (convert(varchar(8),dateadd(d,-1,dateadd(m,1,convert(smalldatetime,convert(varchar(6),@mnth2) + '01'))),112)) set @l_monthenddate = dateadd(d,-1,dateadd(m,1,convert(smalldatetime,convert(varchar(6),@mnth2) + '01'))) select a.actingnumber, max(a.clipid) clipid, max(a.outfitid) outfitid, max(b.skittraindate) skittraindate, max(b.sctrn$) skittrainhours, max(a.crowdcontrol) last_mnth_crowdcontrol table1 (nolock) join table2 b (nolock) on a.actingnumber = b.actingnumber left outer join table2 b2 (nolock) on (a.actingnumber = b2.actingnumber , b.actingnumber = b2.actingnumber , b2.skittype in ('180','184','185') ) left outer join table2 b3 (nolock) on (a.actingnumber = b3.actingnumber , b.actingnumber = b3.actingnumber , b3.skittype in ( '980','984','985') ) join ( select * ( select distinct a.actingnumber, case when a.skitperfdate <> 0 b.prnbal else a.prnbal end prnbal , '' clipid ,'' outfitid , case when c.useprebump = 1 case when a.crowdage < 1 0 when a.crowdage between 1 , convert(varchar(4),datediff(dd,dateadd(month,-1,@delq_mnth),@delq_mnth)) 15 when a.crowdage between convert(varchar(4),datediff(dd,dateadd(month,-1,@delq_mnth),@delq_mnth)+1) , convert(varchar(4),datediff(dd,dateadd(month,-2,@delq_mnth),@delq_mnth)) 30 when a.crowdage between convert(varchar(4),datediff(dd,dateadd(month,-2,@delq_mnth),@delq_mnth)+1) , convert(varchar(4),datediff(dd,dateadd(month,-3,@delq_mnth),@delq_mnth)) 60 when a.crowdage between convert(varchar(4),datediff(dd,dateadd(month,-3,@delq_mnth),@delq_mnth)+1) , convert(varchar(4),datediff(dd,dateadd(month,-4,@delq_mnth),@delq_mnth)) 90 when a.crowdage between convert(varchar(4),datediff(dd,dateadd(month,-4,@delq_mnth),@delq_mnth)+1) , convert(varchar(4),datediff(dd,dateadd(month,-5,@delq_mnth),@delq_mnth)) 120 when a.crowdage between convert(varchar(4),datediff(dd,dateadd(month,-5,@delq_mnth),@delq_mnth)+1) , convert(varchar(4),datediff(dd,dateadd(month,-6,@delq_mnth),@delq_mnth)) 150 when a.crowdage between convert(varchar(4),datediff(dd,dateadd(month,-6,@delq_mnth),@delq_mnth)+1) , convert(varchar(4),datediff(dd,dateadd(month,-7,@delq_mnth),@delq_mnth)) 180 when a.crowdage between convert(varchar(4),datediff(dd,dateadd(month,-7,@delq_mnth),@delq_mnth)+1) , convert(varchar(4),datediff(dd,dateadd(month,-8,@delq_mnth),@delq_mnth)) 210 when a.crowdage between convert(varchar(4),datediff(dd,dateadd(month,-8,@delq_mnth),@delq_mnth)+1) , convert(varchar(4),datediff(dd,dateadd(month,-9,@delq_mnth),@delq_mnth)) 240 when a.crowdage between convert(varchar(4),datediff(dd,dateadd(month,-9,@delq_mnth),@delq_mnth)+1) , convert(varchar(4),datediff(dd,dateadd(month,-10,@delq_mnth),@delq_mnth)) 270 when a.crowdage > convert(varchar(4),datediff(dd,dateadd(month,-10,@delq_mnth),@delq_mnth)) 300 else 0 end else isnull(a.postbucket,0) end crowdcontrol, a.skitperfdate, a.mnth, a.closcd table3 (nolock) left outer join table4 b (nolock) on b.actingnumber = a.actingnumber left join table5 c (nolock) on c.clipid = clipid , c.outfitid = outfitid --left outer join table3 a2 --on (a.actingnumber = a2.actingnumber , a.safldt > a2.safldt ) --left outer join table3 a3 --on (a.actingnumber = a3.actingnumber , a.crowdage > a3.crowdage ) a.safldt = 0 , a.crowdage = 0 --a3.actingnumber null --and a2.actingnumber null --mnth >= @mnth , a.calcstatus = 'completed' ) ) h on a.actingnumber = h.actingnumber a.clipid = @clipid -- transaction codes: , b.skittype in ('180','184','185')--, '980','984','985') , b.skittraindate >= @bgdate --and b2.skittype not in ( '980','984','985') , b2.skittype not null , (b2.skittraindate > b3.skittraindate or b3.skittraindate null ) group a.actingnumber --order last_mnth_crowdcontrol desc
turns out using existing query , modifying not work. had add query first, make modifications, , insert query spreadsheet (use existing data connection).
Comments
Post a Comment