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:

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
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
Post a Comment