?
Solved

Simple Pivot Question

Posted on 2012-03-21
5
Medium Priority
?
361 Views
Last Modified: 2012-03-22
have a query (select  [AcctNo], [shares], [symbol] from MyTable) that returns:

[AcctNo], [shares], [symbol]
acct01,    100 ,  msft
acct02,    150,  msft
acct02,    200,  aapl
acct02,    250 ,  aapl
acct03,    300 ,  intl
.
..

I'd like to pivot the data so it displays as:
[ ] ,    [acct01] , [acct02], [acct03], .....
msft,        100,         150,      0
aapl,             0,         450,     0
intl ,              0,             0,     300
.
..
Number of [AcctNo] and [symbol] are undetermined.

Any help on the SQL here would be appreciated.
0
Comment
Question by:chrisli
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
5 Comments
 
LVL 15

Expert Comment

by:tim_cs
ID: 37749700
DECLARE @Table TABLE (AcctNo VARCHAR(20),shares INT, symbol VARCHAR(20))

INSERT INTO @Table
        (AcctNo, shares, symbol)
VALUES
        ('acct01',100,'msft')
		,('acct02',150,'msft')
		,('acct02',200,'aapl')
		,('acct02',250,'aapl')
		,('acct03',300,'intl')

SELECT
	symbol
	,COALESCE([acct01],0) Acct01
	,COALESCE([acct02],0) Acct02
	,COALESCE([acct03],0) Acct03
FROM
	@Table
PIVOT (SUM(shares) FOR AcctNo IN ([acct01]
	,[acct02]
	,[acct03])) pvt

Open in new window

0
 

Author Comment

by:chrisli
ID: 37750240
Thanks, but what if the # of acctno is not dynamic(more than 3)?
0
 
LVL 39

Accepted Solution

by:
appari earned 2000 total points
ID: 37750746
try this
DECLARE @accounts VARCHAR(max)
;with accounts as (Select distinct AcctNo From MyTable)
Select @accounts = COALESCE( '[' + AcctNo + '],' + @accounts,'[' + AcctNo + ']') from accounts 

Exec('Select symbol,' + @accounts + ' From  MyTable PIVOT (Sum(shares) for AcctNo in (' + @accounts + ')) as PVT ')

Open in new window

0
 
LVL 20

Expert Comment

by:BuggyCoder
ID: 37751309
See this for your reference, a very good discussion on problem that you have...
http://www.experts-exchange.com/Microsoft/Development/MS-SQL-Server/SQL_Server_2008/Q_27633177.html#a37724982
0
 

Author Closing Comment

by:chrisli
ID: 37754301
Thanks works great
0

Featured Post

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Slowly Changing Dimension Transformation component in data task flow is very useful for us to manage and control how data changes in SSIS.
The Delta outage: 650 cancelled flights, more than 1200 delayed flights, thousands of frustrated customers, tens of millions of dollars in damages – plus untold reputational damage to one of the world’s most trusted airlines. All due to a catastroph…
Familiarize people with the process of utilizing SQL Server functions from within Microsoft Access. Microsoft Access is a very powerful client/server development tool. One of the SQL Server objects that you can interact with from within Microsoft Ac…
This video shows how to set up a shell script to accept a positional parameter when called, pass that to a SQL script, accept the output from the statement back and then manipulate it in the Shell.
Suggested Courses

771 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question