| Author |
Topic |
|
WoodHouse
Posting Yak Master
211 Posts |
Posted - 2010-04-09 : 02:11:00
|
| HiI have table sales. In sales table columns contains Auto_NumerOrder_numberProduct_NameOrder_amountOrder_dateOne product is having more than one orders (order_numer )I will pass three parameters@Threshold_Amount = 1000@Start_Date = 01/01/2009@End_Date = 31/12/2009I need the query to fetch the Auto_Number and products, the order_amount should be more than 1000(Threshold_Amount) and the order_date between 01/01/2009 and 31/12/2009.Please help on this… |
|
|
khtan
In (Som, Ni, Yak)
17689 Posts |
Posted - 2010-04-09 : 02:17:21
|
[code]select Auto_Number, Product_Namefrom saleswhere Order_date >= @Start_Dateand Order_Date <= @End_Dateand Order_amount > @Threshold_Amount[/code] KH[spoiler]Time is always against us[/spoiler] |
 |
|
|
pk_bohra
Master Smack Fu Yak Hacker
1182 Posts |
Posted - 2010-04-09 : 02:19:57
|
| Try this:Declare @Threshold_Amount int,@Start_Date datetime,@End_Date datetimeset @Threshold_Amount = 1000set @Start_Date = 01/01/2009set @End_Date = 31/12/2009Select Auto_number, Product_name, Order_amount fromSalesTablewhere Order_amount > @Threshold_Amount and order_date between @Start_Date and @End_Date |
 |
|
|
WoodHouse
Posting Yak Master
211 Posts |
Posted - 2010-04-09 : 02:25:18
|
Hi khtanIs possible the product having more than one ordersSo i need to sum(Amount) >= 1000 group by productExampleCREATE TABLE #TEMP_TEST(ID INT IDENTITY(1,1),ORDER_NUMBER INT,PRODUCT VARCHAR(50),AMOUNT FLOAT,ORDER_DATE DATETIME)INSERT INTO #TEMP_TESTSELECT 240135, 'TEST',500,GETDATE() UNION ALLSELECT 240136, 'TEST',500,GETDATE()-1 UNION ALLSELECT 240167, 'ORIGIN',950,GETDATE()+1 UNION ALLSELECT 140268, 'LESS',900,GETDATE()-5 UNION ALL SELECT 213212, 'GREATER',300,GETDATE()+6 UNION ALLSELECT 213123, 'GREATER',700,GETDATE()+10set @Threshold_Amount = 1000set @Start_Date = 2010-04-01set @End_Date = 2010-04-31Expected Output is1 240135 test 500 2010-04-09 11:47:35.4802 240136 test 500 2010-04-08 11:47:35.4805 213212 greater 300 2010-04-15 11:47:35.4806 213123 greater 700 2010-04-19 11:47:35.480 |
 |
|
|
pk_bohra
Master Smack Fu Yak Hacker
1182 Posts |
Posted - 2010-04-09 : 02:30:02
|
| Try this:Select Order_number, Product, Amount from #TEMP_TESTWhere Product in (Select Product from #TEMP_TEST group by producthaving sum(amount) >= 1000)Regards,Bohra |
 |
|
|
khtan
In (Som, Ni, Yak)
17689 Posts |
Posted - 2010-04-09 : 02:30:44
|
[code]select t.ID, t.ORDER_NUMBER, t.PRODUCT, t.AMOUNT, t.ORDER_DATEfrom #TEMP_TEST t inner join ( select PRODUCT from #TEMP_TEST group by PRODUCT having sum(AMOUNT) >= @Threshold_Amount ) p on t.PRODUCT = p.PRODUCTwhere ORDER_DATE >= @Start_Dateand ORDER_DATE <= @End_Date[/code] KH[spoiler]Time is always against us[/spoiler] |
 |
|
|
WoodHouse
Posting Yak Master
211 Posts |
Posted - 2010-04-09 : 02:34:24
|
| Thanks a Lot Khtan & pk_bohrapk_bohra I did the same thing what u have done. But am looking different method.Thanks |
 |
|
|
WoodHouse
Posting Yak Master
211 Posts |
Posted - 2010-04-09 : 02:38:42
|
Hi KhtanIf i use your method i will get error like thisThe conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.If i use below one its working fine.. select t.ID, t.ORDER_NUMBER, t.PRODUCT, t.AMOUNT, t.ORDER_DATEfrom #TEMP_TEST t inner join ( select PRODUCT from #TEMP_TEST group by PRODUCT having sum(AMOUNT) >= 1000 ) p on t.PRODUCT = p.PRODUCTwhere ORDER_DATE BETWEEN '2010-04-01' AND '2010-04-30' |
 |
|
|
khtan
In (Som, Ni, Yak)
17689 Posts |
Posted - 2010-04-09 : 02:53:17
|
quote: If i use your method i will get error like thisThe conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.
quote: Originally posted by WoodHouseset @Threshold_Amount = 1000set @Start_Date = '2010-04-01'set @End_Date = '2010-04-31 30'
KH[spoiler]Time is always against us[/spoiler] |
 |
|
|
|