Saturday, July 13, 2013

sql dynamic order by

--Dynamic Order By

create table Bankers(
BankerID Integer,
BankerName VARCHAR(20),
BankerContactLName VARCHAR(20),
BankerContactFName VARCHAR(20),
BankerCity VARCHAR(20),
BankerState VARCHAR(20),
BankerZipCode VARCHAR(20),
BankerPhone VARCHAR(20)
)
GO


insert into Bankers values (1, 'ABC Inc.','Joe','Smith','Vancouver','BC','11111','111-111-1111');
insert into Bankers values (2, 'DEF Inc.','Red','Rice', 'New York', 'DE','22222','222-222-2222');
insert into Bankers values (3, 'HJI Inc.','Kit','Cat', 'Paris', 'CA','33333','333-333-3333');
insert into Bankers values (4, 'QWE Inc.','Git','Black','Regina', 'ER','44444','444-444-4444');
insert into Bankers values (5, 'RTY Inc.','Wil','Lee', 'Toronto', 'YU','55555','555-555-5555');
insert into Bankers values (6, 'YUI Inc.','Ted','Larry','Calgary', 'TY','66666','666-666-6666');
insert into Bankers values (7, 'OIP Inc.','Yam','Act', 'San Franc','FG','77777','777-777-7777');
insert into Bankers values (8, 'SAD Inc.','Hit','Eat', 'Orland', 'PO','88888','888-888-8888');
insert into Bankers values (9, 'DFG Inc.','Sad','Lee', 'Wisler', 'PL','99999','999-999-9999');
insert into Bankers values (0, 'GHJ Inc.','Bit','Lee', 'Ticker', 'MN','00000','000-000-0000');




DECLARE @ORDERBY VARCHAR(20)
SET @ORDERBY = 1

SELECT BankerName,
BankerCity + ', ' + BankerState + ' ' + BankerZipCode AS ADDRESS
FROM Bankers
ORDER BY CASE
WHEN @OrderBY = 1 THEN BankerName
WHEN @OrderBY = 2 THEN BankerCity
WHEN @OrderBY = 3 THEN BankerState
WHEN @OrderBY = 4 THEN BankerZipCode END DESC

0 comments:

Post a Comment