Please start any new threads on our new
site at https://forums.sqlteam.com. We've got lots of great SQL Server
experts to answer whatever question you can come up with.
| Author |
Topic |
|
rcr69er
Constraint Violating Yak Guru
327 Posts |
Posted - 2008-05-26 : 12:20:31
|
| HiSay I use the following query:SELECT '1 Copy'UNIONSELECT '2-4 Copies'UNIONSELECT '5-9 Copies'UNIONSELECT '10-19 Copies'UNIONSELECT '20-49 Copies'UNIONSELECT '50-199 Copies'UNION SELECT '200+ Copies'The output is 1 Copy10-19 Copies200+ Copies20-49 Copies2-4 Copies50-199 Copies5-9 CopiesHow would I have to change the query so it is outputted in the correct order? As in:1 Copy2-4 Copies5-9 Copies10-19 Copies20-49 Copies50-199 Copies200+ CopiesThanks |
|
|
spirit1
Cybernetic Yak Master
11752 Posts |
Posted - 2008-05-26 : 12:26:44
|
| select YourColumnName from (SELECT 1 as orderNum, '1 Copy' as YourColumnNameUNIONSELECT 2, '2-4 Copies'UNIONSELECT 3, '5-9 Copies'UNIONSELECT 4, '10-19 Copies'UNIONSELECT 5, '20-49 Copies'UNIONSELECT 6, '50-199 Copies'UNION SELECT 7, '200+ Copies') torder by orderNum_______________________________________________Causing trouble since 1980Blog: http://weblogs.sqlteam.com/mladenpSpeed up SSMS development: www.ssmstoolspack.com <- version 1.0 out! |
 |
|
|
visakh16
Very Important crosS Applying yaK Herder
52326 Posts |
Posted - 2008-05-26 : 12:27:08
|
| [code]SELECT t.Value, CAST(LEFT(Value,CHARINDEX(' ',REPLACE(REPLACE(Value,'-',' '),'+',' '))-1) AS int) AS OrderVal FROM(SELECT '1 Copy' AS ValueUNIONSELECT '2-4 Copies'UNIONSELECT '5-9 Copies'UNIONSELECT '10-19 Copies'UNIONSELECT '20-49 Copies'UNIONSELECT '50-199 Copies'UNION SELECT '200+ Copies')tORDER BY OrderVal[/code] |
 |
|
|
rcr69er
Constraint Violating Yak Guru
327 Posts |
Posted - 2008-05-26 : 12:59:44
|
| HiThanks for that, but i'm a bit confused how I would apply that to the following query:DECLARE @period DATETIMESET @period = '2008-05-01'--BEERSELECT '1' AS 'Amount' ,'BERR' AS Family ,COUNT(*) AS 'Value'FROM dbo.OrderLines AS olLEFT JOIN dbo.OrderHeaders AS oh ON ol.[Sales Order Reference] = oh.[Sales Order Reference]LEFT JOIN dbo.StockHeaders AS sh ON ol.[Part Number] = sh.[Part Number]LEFT JOIN dbo.StockCategories AS sc ON sh.[Stock Category] = sc.[Stock Category]LEFT JOIN dbo.DatePeriods AS dp ON oh.[Order Date] BETWEEN dp.BeginDate and dp.EndDateWHERE sc.[Stock Group] IN (SELECT sg.[Group] FROM dbo.StockGroup AS sg WHERE sg.[ID] = 'BERR')AND ol.[Sales Order Reference] NOT IN (SELECT [Sales Order Reference] FROM dbo.CancelledOrderLines WHERE [Part Number] = ol.[Part Number])AND [Qty of Stock Reserved] = 1AND dp.ID=@PeriodUNIONSELECT '2 - 4' AS 'Amount' ,'BERR' AS Family ,COUNT(*) AS 'Value'FROM dbo.OrderLines AS olLEFT JOIN dbo.OrderHeaders AS oh ON ol.[Sales Order Reference] = oh.[Sales Order Reference]LEFT JOIN dbo.StockHeaders AS sh ON ol.[Part Number] = sh.[Part Number]LEFT JOIN dbo.StockCategories AS sc ON sh.[Stock Category] = sc.[Stock Category]LEFT JOIN dbo.DatePeriods AS dp ON oh.[Order Date] BETWEEN dp.BeginDate and dp.EndDateWHERE sc.[Stock Group] IN (SELECT sg.[Group] FROM dbo.StockGroup AS sg WHERE sg.[ID] = 'BERR')AND ol.[Sales Order Reference] NOT IN (SELECT [Sales Order Reference] FROM dbo.CancelledOrderLines WHERE [Part Number] = ol.[Part Number])AND [Qty of Stock Reserved] BETWEEN 2 AND 4AND dp.ID=@PeriodUNIONSELECT '5-9' AS 'Amount' ,'BERR' AS Family ,COUNT(*) AS 'Value'FROM dbo.OrderLines AS olLEFT JOIN dbo.OrderHeaders AS oh ON ol.[Sales Order Reference] = oh.[Sales Order Reference]LEFT JOIN dbo.StockHeaders AS sh ON ol.[Part Number] = sh.[Part Number]LEFT JOIN dbo.StockCategories AS sc ON sh.[Stock Category] = sc.[Stock Category]LEFT JOIN dbo.DatePeriods AS dp ON oh.[Order Date] BETWEEN dp.BeginDate and dp.EndDateWHERE sc.[Stock Group] IN (SELECT sg.[Group] FROM dbo.StockGroup AS sg WHERE sg.[ID] = 'BERR')AND ol.[Sales Order Reference] NOT IN (SELECT [Sales Order Reference] FROM dbo.CancelledOrderLines WHERE [Part Number] = ol.[Part Number])AND [Qty of Stock Reserved] BETWEEN 5 AND 9AND dp.ID=@PeriodUNION SELECT '10-19' AS 'Amount' ,'BERR' AS Family ,COUNT(*) AS 'Value'FROM dbo.OrderLines AS olLEFT JOIN dbo.OrderHeaders AS oh ON ol.[Sales Order Reference] = oh.[Sales Order Reference]LEFT JOIN dbo.StockHeaders AS sh ON ol.[Part Number] = sh.[Part Number]LEFT JOIN dbo.StockCategories AS sc ON sh.[Stock Category] = sc.[Stock Category]LEFT JOIN dbo.DatePeriods AS dp ON oh.[Order Date] BETWEEN dp.BeginDate and dp.EndDateWHERE sc.[Stock Group] IN (SELECT sg.[Group] FROM dbo.StockGroup AS sg WHERE sg.[ID] = 'BERR')AND ol.[Sales Order Reference] NOT IN (SELECT [Sales Order Reference] FROM dbo.CancelledOrderLines WHERE [Part Number] = ol.[Part Number])AND [Qty of Stock Reserved] BETWEEN 10 AND 19AND dp.ID=@PeriodUNIONSELECT '20-49' AS 'Amount' ,'BERR' AS Family ,COUNT(*) AS 'Value'FROM dbo.OrderLines AS olLEFT JOIN dbo.OrderHeaders AS oh ON ol.[Sales Order Reference] = oh.[Sales Order Reference]LEFT JOIN dbo.StockHeaders AS sh ON ol.[Part Number] = sh.[Part Number]LEFT JOIN dbo.StockCategories AS sc ON sh.[Stock Category] = sc.[Stock Category]LEFT JOIN dbo.DatePeriods AS dp ON oh.[Order Date] BETWEEN dp.BeginDate and dp.EndDateWHERE sc.[Stock Group] IN (SELECT sg.[Group] FROM dbo.StockGroup AS sg WHERE sg.[ID] = 'BERR')AND ol.[Sales Order Reference] NOT IN (SELECT [Sales Order Reference] FROM dbo.CancelledOrderLines WHERE [Part Number] = ol.[Part Number])AND [Qty of Stock Reserved] BETWEEN 20 AND 49AND dp.ID=@PeriodUNIONSELECT '50-199' AS 'Amount' ,'BERR' AS Family ,COUNT(*) AS 'Value'FROM dbo.OrderLines AS olLEFT JOIN dbo.OrderHeaders AS oh ON ol.[Sales Order Reference] = oh.[Sales Order Reference]LEFT JOIN dbo.StockHeaders AS sh ON ol.[Part Number] = sh.[Part Number]LEFT JOIN dbo.StockCategories AS sc ON sh.[Stock Category] = sc.[Stock Category]LEFT JOIN dbo.DatePeriods AS dp ON oh.[Order Date] BETWEEN dp.BeginDate and dp.EndDateWHERE sc.[Stock Group] IN (SELECT sg.[Group] FROM dbo.StockGroup AS sg WHERE sg.[ID] = 'BERR')AND ol.[Sales Order Reference] NOT IN (SELECT [Sales Order Reference] FROM dbo.CancelledOrderLines WHERE [Part Number] = ol.[Part Number])AND [Qty of Stock Reserved] BETWEEN 50 AND 199AND dp.ID=@PeriodUNIONSELECT '200+' AS 'Amount' ,'BERR' AS Family ,COUNT(*) AS 'Value'FROM dbo.OrderLines AS olLEFT JOIN dbo.OrderHeaders AS oh ON ol.[Sales Order Reference] = oh.[Sales Order Reference]LEFT JOIN dbo.StockHeaders AS sh ON ol.[Part Number] = sh.[Part Number]LEFT JOIN dbo.StockCategories AS sc ON sh.[Stock Category] = sc.[Stock Category]LEFT JOIN dbo.DatePeriods AS dp ON oh.[Order Date] BETWEEN dp.BeginDate and dp.EndDateWHERE sc.[Stock Group] IN (SELECT sg.[Group] FROM dbo.StockGroup AS sg WHERE sg.[ID] = 'BERR')AND ol.[Sales Order Reference] NOT IN (SELECT [Sales Order Reference] FROM dbo.CancelledOrderLines WHERE [Part Number] = ol.[Part Number])AND [Qty of Stock Reserved] >= 200AND dp.ID=@PeriodORDER BY familyAny ideas??? |
 |
|
|
visakh16
Very Important crosS Applying yaK Herder
52326 Posts |
Posted - 2008-05-26 : 13:09:16
|
quote: Originally posted by rcr69er HiThanks for that, but i'm a bit confused how I would apply that to the following query:DECLARE @period DATETIMESET @period = '2008-05-01'--BEER(SELECT '1' AS 'Amount' ,'BERR' AS Family ,COUNT(*) AS 'Value',1 AS OrderValueFROM dbo.OrderLines AS olLEFT JOIN dbo.OrderHeaders AS oh ON ol.[Sales Order Reference] = oh.[Sales Order Reference]LEFT JOIN dbo.StockHeaders AS sh ON ol.[Part Number] = sh.[Part Number]LEFT JOIN dbo.StockCategories AS sc ON sh.[Stock Category] = sc.[Stock Category]LEFT JOIN dbo.DatePeriods AS dp ON oh.[Order Date] BETWEEN dp.BeginDate and dp.EndDateWHERE sc.[Stock Group] IN (SELECT sg.[Group] FROM dbo.StockGroup AS sg WHERE sg.[ID] = 'BERR')AND ol.[Sales Order Reference] NOT IN (SELECT [Sales Order Reference] FROM dbo.CancelledOrderLines WHERE [Part Number] = ol.[Part Number])AND [Qty of Stock Reserved] = 1AND dp.ID=@PeriodUNIONSELECT '2 - 4' AS 'Amount' ,'BERR' AS Family ,COUNT(*) AS 'Value',2FROM dbo.OrderLines AS olLEFT JOIN dbo.OrderHeaders AS oh ON ol.[Sales Order Reference] = oh.[Sales Order Reference]LEFT JOIN dbo.StockHeaders AS sh ON ol.[Part Number] = sh.[Part Number]LEFT JOIN dbo.StockCategories AS sc ON sh.[Stock Category] = sc.[Stock Category]LEFT JOIN dbo.DatePeriods AS dp ON oh.[Order Date] BETWEEN dp.BeginDate and dp.EndDateWHERE sc.[Stock Group] IN (SELECT sg.[Group] FROM dbo.StockGroup AS sg WHERE sg.[ID] = 'BERR')AND ol.[Sales Order Reference] NOT IN (SELECT [Sales Order Reference] FROM dbo.CancelledOrderLines WHERE [Part Number] = ol.[Part Number])AND [Qty of Stock Reserved] BETWEEN 2 AND 4AND dp.ID=@PeriodUNIONSELECT '5-9' AS 'Amount' ,'BERR' AS Family ,COUNT(*) AS 'Value',3FROM dbo.OrderLines AS olLEFT JOIN dbo.OrderHeaders AS oh ON ol.[Sales Order Reference] = oh.[Sales Order Reference]LEFT JOIN dbo.StockHeaders AS sh ON ol.[Part Number] = sh.[Part Number]LEFT JOIN dbo.StockCategories AS sc ON sh.[Stock Category] = sc.[Stock Category]LEFT JOIN dbo.DatePeriods AS dp ON oh.[Order Date] BETWEEN dp.BeginDate and dp.EndDateWHERE sc.[Stock Group] IN (SELECT sg.[Group] FROM dbo.StockGroup AS sg WHERE sg.[ID] = 'BERR')AND ol.[Sales Order Reference] NOT IN (SELECT [Sales Order Reference] FROM dbo.CancelledOrderLines WHERE [Part Number] = ol.[Part Number])AND [Qty of Stock Reserved] BETWEEN 5 AND 9AND dp.ID=@PeriodUNION SELECT '10-19' AS 'Amount' ,'BERR' AS Family ,COUNT(*) AS 'Value',4FROM dbo.OrderLines AS olLEFT JOIN dbo.OrderHeaders AS oh ON ol.[Sales Order Reference] = oh.[Sales Order Reference]LEFT JOIN dbo.StockHeaders AS sh ON ol.[Part Number] = sh.[Part Number]LEFT JOIN dbo.StockCategories AS sc ON sh.[Stock Category] = sc.[Stock Category]LEFT JOIN dbo.DatePeriods AS dp ON oh.[Order Date] BETWEEN dp.BeginDate and dp.EndDateWHERE sc.[Stock Group] IN (SELECT sg.[Group] FROM dbo.StockGroup AS sg WHERE sg.[ID] = 'BERR')AND ol.[Sales Order Reference] NOT IN (SELECT [Sales Order Reference] FROM dbo.CancelledOrderLines WHERE [Part Number] = ol.[Part Number])AND [Qty of Stock Reserved] BETWEEN 10 AND 19AND dp.ID=@PeriodUNIONSELECT '20-49' AS 'Amount' ,'BERR' AS Family ,COUNT(*) AS 'Value',5FROM dbo.OrderLines AS olLEFT JOIN dbo.OrderHeaders AS oh ON ol.[Sales Order Reference] = oh.[Sales Order Reference]LEFT JOIN dbo.StockHeaders AS sh ON ol.[Part Number] = sh.[Part Number]LEFT JOIN dbo.StockCategories AS sc ON sh.[Stock Category] = sc.[Stock Category]LEFT JOIN dbo.DatePeriods AS dp ON oh.[Order Date] BETWEEN dp.BeginDate and dp.EndDateWHERE sc.[Stock Group] IN (SELECT sg.[Group] FROM dbo.StockGroup AS sg WHERE sg.[ID] = 'BERR')AND ol.[Sales Order Reference] NOT IN (SELECT [Sales Order Reference] FROM dbo.CancelledOrderLines WHERE [Part Number] = ol.[Part Number])AND [Qty of Stock Reserved] BETWEEN 20 AND 49AND dp.ID=@PeriodUNIONSELECT '50-199' AS 'Amount' ,'BERR' AS Family ,COUNT(*) AS 'Value',6FROM dbo.OrderLines AS olLEFT JOIN dbo.OrderHeaders AS oh ON ol.[Sales Order Reference] = oh.[Sales Order Reference]LEFT JOIN dbo.StockHeaders AS sh ON ol.[Part Number] = sh.[Part Number]LEFT JOIN dbo.StockCategories AS sc ON sh.[Stock Category] = sc.[Stock Category]LEFT JOIN dbo.DatePeriods AS dp ON oh.[Order Date] BETWEEN dp.BeginDate and dp.EndDateWHERE sc.[Stock Group] IN (SELECT sg.[Group] FROM dbo.StockGroup AS sg WHERE sg.[ID] = 'BERR')AND ol.[Sales Order Reference] NOT IN (SELECT [Sales Order Reference] FROM dbo.CancelledOrderLines WHERE [Part Number] = ol.[Part Number])AND [Qty of Stock Reserved] BETWEEN 50 AND 199AND dp.ID=@PeriodUNIONSELECT '200+' AS 'Amount' ,'BERR' AS Family ,COUNT(*) AS 'Value',7FROM dbo.OrderLines AS olLEFT JOIN dbo.OrderHeaders AS oh ON ol.[Sales Order Reference] = oh.[Sales Order Reference]LEFT JOIN dbo.StockHeaders AS sh ON ol.[Part Number] = sh.[Part Number]LEFT JOIN dbo.StockCategories AS sc ON sh.[Stock Category] = sc.[Stock Category]LEFT JOIN dbo.DatePeriods AS dp ON oh.[Order Date] BETWEEN dp.BeginDate and dp.EndDateWHERE sc.[Stock Group] IN (SELECT sg.[Group] FROM dbo.StockGroup AS sg WHERE sg.[ID] = 'BERR')AND ol.[Sales Order Reference] NOT IN (SELECT [Sales Order Reference] FROM dbo.CancelledOrderLines WHERE [Part Number] = ol.[Part Number])AND [Qty of Stock Reserved] >= 200AND dp.ID=@Period)tORDER BY t.OrderValue,t.family Any ideas???
Change like this |
 |
|
|
SwePeso
Patron Saint of Lost Yaks
30421 Posts |
Posted - 2008-05-26 : 13:14:47
|
Something similar to this. It might not be correct since you haven't prefixed all columns.SELECT c.msgText, 'BERR' AS Family, COUNT(dp.BeginDate) AS [Value]FROM ( SELECT '1 Copy' AS msgText, 1 AS msgLower, 1 AS msgUpper UNION ALL SELECT '2-4 Copies', 2, 4 UNION ALL SELECT '5-9 Copies', 5, 9 UNION ALL SELECT '10-19 Copies', 10, 19 UNION ALL SELECT '20-49 Copies', 20, 49 UNION ALL SELECT '50-199 Copies', 50, 199 UNION ALL SELECT '200+ Copies', 200, 2147483647 ) AS cLEFT JOIN dbo.OrderLines AS ol ON ol.[Qty of Stock Reserved] BETWEEN c.msgLower AND c.msgUpper AND ol.[Sales Order Reference] NOT IN (SELECT [Sales Order Reference] FROM dbo.CancelledOrderLines WHERE [Part Number] = ol.[Part Number])LEFT JOIN dbo.StockHeaders AS sh ON sh.[Part Number] = ol.[Part Number]LEFT JOIN dbo.StockCategories AS sc ON sc.[Stock Category] = sh.[Stock Category] AND EXISTS (SELECT * FROM dbo.StockGroup AS sg WHERE sg.[ID] = 'BERR' AND sg.[Group] = sc.[Stock Group])LEFT JOIN dbo.OrderHeaders AS oh ON oh.[Sales Order Reference] = ol.[Sales Order Reference]LEFT JOIN dbo.DatePeriods AS dp ON dp.BeginDate <= oh.[Order Date] AND dp.EndDate >= oh.[Order Date] AND dp.ID = @PeriodGROUP BY c.msgText, c.msgLowerORDER BY c.msgLower E 12°55'05.25"N 56°04'39.16" |
 |
|
|
rcr69er
Constraint Violating Yak Guru
327 Posts |
Posted - 2008-05-26 : 13:21:58
|
| Hivisakh16 your query isnt working |
 |
|
|
visakh16
Very Important crosS Applying yaK Herder
52326 Posts |
Posted - 2008-05-26 : 13:30:30
|
quote: Originally posted by rcr69er Hivisakh16 your query isnt working
What's the error you're getting? |
 |
|
|
dass05555
Yak Posting Veteran
55 Posts |
Posted - 2008-05-27 : 08:42:35
|
| Dear friend...,chk this...,i think it would useful to you...,(SELECT 1 as id,'1 Copy' as [No.s] into #tempUNIONSELECT 2 as id,'2-4 Copies'as [No.s]UNIONSELECT 3 as id,'5-9 Copies'as [No.s]UNIONSELECT 4 as id,'10-19 Copies'as [No.s]UNIONSELECT 5 as id,'20-49 Copies'as [No.s]UNIONSELECT 6 as id,'50-199 Copies'as [No.s]UNION SELECT 7 as id,'200+ Copies'as [No.s])order by id select [No.s] from #tempcool..., |
 |
|
|
rcr69er
Constraint Violating Yak Guru
327 Posts |
Posted - 2008-05-27 : 15:05:37
|
| HeyThanks guys for your help!!! |
 |
|
|
|
|
|
|
|