G’day,
I love coming across features of SQL that I’ve not used before and one happened today – the CHOOSE statement – introduced in SQL SERVER 2012.
So what does it do?
Well basically a label can be applied at a specific index in a list.
Here’s a demonstration script that uses two queries to achieve the same thing – the first way, using the CHOOSE method and the second way, using the CASE statement.
USE [tempdb]; GO IF OBJECT_ID('tempdb..#Regions') IS NOT NULL BEGIN PRINT 'Dropping table #Regions'; DROP TABLE [#Regions]; END; GO CREATE TABLE [#Regions] ( Number INT ); GO INSERT INTO [#Regions] VALUES (1); INSERT INTO [#Regions] VALUES (2); INSERT INTO [#Regions] VALUES (3); INSERT INTO [#Regions] VALUES (4); INSERT INTO [#Regions] VALUES (5); GO SELECT [Number], CHOOSE(Number , 'New Zealand' , 'Austrailia' , 'South Africa' , 'USA' , 'UK') [Country Name] FROM [#Regions] ORDER BY [Country Name] GO SELECT [Number], CASE ([Number]) WHEN 1 THEN 'New Zealand' WHEN 2 THEN 'Australia' WHEN 3 THEN 'South Africa' WHEN 4 THEN 'USA' WHEN 5 THEN 'UK' ELSE 'UNKNOWN' END [Country Name] FROM [#Regions] ORDER BY [Country Name]; GO
in case you’re wondering the query plans are identical
have a great day.
Cheers
Martin,