Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
A little SQL quiz
Message
 
 
À
29/06/2014 13:57:53
Information générale
Forum:
Microsoft SQL Server
Catégorie:
Syntaxe SQL
Versions des environnements
SQL Server:
SQL Server 2005
Application:
Web
Divers
Thread ID:
01602842
Message ID:
01602843
Vues:
66
>This one is something that I'm sure database developers have run into. Data stored in columns that ideally should be stored in rows.
>
>I'll keep the example very basic.
>
>
create table dbo.SalesTemp (SalesManID varchar(10), Jan decimal(14,4), Feb decimal(14,4), Mar decimal(14,4))
>insert into SalesTemp values ('Salesman A', 100, 200, 300), 
>                                          ('Salesman B', 400, 500, 600)
>
>One row for each Salesman ID, and columns for monthly sales. Normally it would probably be more than 3 columns but just keeping it simple.
>
>We want the result set to look like this:
>
>SalesManID MonthName MonthlySales
>Salesman A Feb 200.0000
>Salesman A Jan 100.0000
>Salesman A Mar 300.0000
>Salesman B Feb 500.0000
>Salesman B Jan 400.0000
>Salesman B Mar 600.0000
>
>There are (at least) two ways to do this, with potentially significant differences in execution plan and performance. I'm sure someone like Naomi can write these in her sleep, but anyone want to take a crack? I use this one as an example in SQL sessions to demonstrate a language feature added in SQL 2005 that doesn't always get as much attention as it should.

I know of 3 ways to make the desired output. I am not giving them up, though. One version works in any versions of SQL Server and also in FoxPro as well.
If it's not broken, fix it until it is.


My Blog
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform