sql - "group by" creating issue -


my query follows:

select    avg(case when buy_sell = 1 , scrip_code='" + ds.tables[0].rows[i][2].tostring() + "' , sauda_date between convert(datetime,'" + dtpfordate.value.date.tostring("dd/mm/yyyy") + "') , convert(datetime,'" + dtptodate.value.date.tostring("dd/mm/yyyy") + "') market_rate else 0 end) avgbuyrate ,    avg(case when buy_sell = 2 market_rate else 0 end) avgsellrate,   convert(varchar(11),sauda_date) sauda_date,     sum(case when buy_sell = 1 , scrip_code='" + ds.tables[0].rows[i][2].tostring() + "' , sauda_date between convert(datetime,'" + dtpfordate.value.date.tostring("dd/mm/yyyy") + "') , convert(datetime,'" + dtptodate.value.date.tostring("dd/mm/yyyy") + "') trade_qty else 0 end) buyqty,   sum(case when buy_sell = 2 , scrip_code='" + ds.tables[0].rows[i][2].tostring() + "' , sauda_date between convert(datetime,'" + dtpfordate.value.date.tostring("dd/mm/yyyy") + "') , convert(datetime,'" + dtptodate.value.date.tostring("dd/mm/yyyy") + "') trade_qty else 0 end) sellqty ,        sum(case when buy_sell = 1 , scrip_code='" + ds.tables[0].rows[i][2].tostring() + "' trade_qty else 0 end) -sum(case when buy_sell = 2 , scrip_code='" + ds.tables[0].rows[i][2].tostring() + "' trade_qty else 0 end) carryforword  tradefile  scrip_code='" + ds.tables[0].rows[i][2].tostring() + "'   , inst_type 'fut%'  group convert(varchar(11),sauda_date)" 

in query have used group sauda_date.

its grouping sauda_date grouping values of current month first , last month.

i want opposite, should group feb, march.

my data visualizer follows:

enter image description here

here can see should first show values 28 feb 2013 march month values.

i have tried order following query:

select avg(case when buy_sell = 1 , scrip_code='" + ds.tables[0].rows[i][2].tostring() + "' , sauda_date between convert(datetime,'" + dtpfordate.value.date.tostring("dd/mm/yyyy") + "') , convert(datetime,'" + dtptodate.value.date.tostring("dd/mm/yyyy") + "') market_rate else 0 end) avgbuyrate , avg(case when buy_sell = 2 market_rate else 0 end) avgsellrate,  convert(varchar(11),sauda_date) sauda_date,sum(case when buy_sell = 1 , scrip_code='" + ds.tables[0].rows[i][2].tostring() + "' , sauda_date between convert(datetime,'" + dtpfordate.value.date.tostring("dd/mm/yyyy") + "') , convert(datetime,'" + dtptodate.value.date.tostring("dd/mm/yyyy") + "') trade_qty else 0 end) buyqty,sum(case when buy_sell = 2 , scrip_code='" + ds.tables[0].rows[i][2].tostring() + "' , sauda_date between convert(datetime,'" + dtpfordate.value.date.tostring("dd/mm/yyyy") + "') , convert(datetime,'" + dtptodate.value.date.tostring("dd/mm/yyyy") + "') trade_qty else 0 end) sellqty ,     sum(case when buy_sell = 1 , scrip_code='" + ds.tables[0].rows[i][2].tostring() + "' trade_qty else 0 end) -sum(case when buy_sell = 2 , scrip_code='" + ds.tables[0].rows[i][2].tostring() + "' trade_qty else 0 end) carryforword tradefile scrip_code='" + ds.tables[0].rows[i][2].tostring() + "' , inst_type 'fut%' order convert(varchar(11),sauda_date) desc 

but gives me following error:

column 'tradefile.sauda_date' invalid in select list because not contained in either aggregate function or group clause. 

note: sauda date nvarchar

what mistake in query?

should add more in it?

edit query:

select    avg(case when buy_sell = 1 , scrip_code='" + ds.tables[0].rows[i][2].tostring() + "' , sauda_date between convert(datetime,'" + dtpfordate.value.date.tostring("dd/mm/yyyy") + "') , convert(datetime,'" + dtptodate.value.date.tostring("dd/mm/yyyy") + "') market_rate else 0 end) avgbuyrate ,    avg(case when buy_sell = 2 market_rate else 0 end) avgsellrate,   convert(varchar(11),sauda_date) sauda_date,     sum(case when buy_sell = 1 , scrip_code='" + ds.tables[0].rows[i][2].tostring() + "' , sauda_date between convert(datetime,'" + dtpfordate.value.date.tostring("dd/mm/yyyy") + "') , convert(datetime,'" + dtptodate.value.date.tostring("dd/mm/yyyy") + "') trade_qty else 0 end) buyqty,   sum(case when buy_sell = 2 , scrip_code='" + ds.tables[0].rows[i][2].tostring() + "' , sauda_date between convert(datetime,'" + dtpfordate.value.date.tostring("dd/mm/yyyy") + "') , convert(datetime,'" + dtptodate.value.date.tostring("dd/mm/yyyy") + "') trade_qty else 0 end) sellqty ,        sum(case when buy_sell = 1 , scrip_code='" + ds.tables[0].rows[i][2].tostring() + "' trade_qty else 0 end) -sum(case when buy_sell = 2 , scrip_code='" + ds.tables[0].rows[i][2].tostring() + "' trade_qty else 0 end) carryforword  tradefile  scrip_code='" + ds.tables[0].rows[i][2].tostring() + "'   , inst_type 'fut%'  group convert(varchar(11),sauda_date) order convert(varchar(11),sauda_date) desc 

enter image description here please guide me.

select    avg(case when buy_sell = 1 , scrip_code='" + ds.tables[0].rows[i][2].tostring() + "' , sauda_date between convert(datetime,'" + dtpfordate.value.date.tostring("dd/mm/yyyy") + "') , convert(datetime,'" + dtptodate.value.date.tostring("dd/mm/yyyy") + "') market_rate else 0 end) avgbuyrate ,    avg(case when buy_sell = 2 market_rate else 0 end) avgsellrate,   convert(varchar(11),sauda_date) sauda_date,     sum(case when buy_sell = 1 , scrip_code='" + ds.tables[0].rows[i][2].tostring() + "' , sauda_date between convert(datetime,'" + dtpfordate.value.date.tostring("dd/mm/yyyy") + "') , convert(datetime,'" + dtptodate.value.date.tostring("dd/mm/yyyy") + "') trade_qty else 0 end) buyqty,   sum(case when buy_sell = 2 , scrip_code='" + ds.tables[0].rows[i][2].tostring() + "' , sauda_date between convert(datetime,'" + dtpfordate.value.date.tostring("dd/mm/yyyy") + "') , convert(datetime,'" + dtptodate.value.date.tostring("dd/mm/yyyy") + "') trade_qty else 0 end) sellqty ,        sum(case when buy_sell = 1 , scrip_code='" + ds.tables[0].rows[i][2].tostring() + "' trade_qty else 0 end) -sum(case when buy_sell = 2 , scrip_code='" + ds.tables[0].rows[i][2].tostring() + "' trade_qty else 0 end) carryforword  tradefile  scrip_code='" + ds.tables[0].rows[i][2].tostring() + "'   , inst_type 'fut%'  group sauda_date order sauda_date asc 

this should work!


Comments