| Author |
Topic |
|
tal.shir
Starting Member
2 Posts |
Posted - 2008-07-03 : 12:27:44
|
| Hello,Hope some one can help me with thisI have a table that contains the following fields: Name, date and value.for examplename date valueaa 1/1 1aa 2/1 2aa 3/1 3bb 1/1 10bb 2/1 20bb 3/1 30cc 1/1 50 cc 2/1 40cc 3/1 30cc 4/1 20 I would like to create the table where the fileds names are date, value_aa,value_bb,value_cc- it means: date value_aa value_bb value_cc1/1 1 10 502/1 2 20 403/1 3 30 304/1 NaN NaN 20Hope you have some ideas....Thanks |
|
|
contrari4n
Starting Member
27 Posts |
Posted - 2008-07-03 : 13:36:03
|
| Assuming you are using 2005, have a look at the PIVOT operator.Richard Fryarhttp://www.sql-server-pro.comSQL Server Articles and Tips |
 |
|
|
jimf
Master Smack Fu Yak Hacker
2875 Posts |
Posted - 2008-07-03 : 14:40:25
|
| Search this site for Row Concatenation. This is from Peso: DECLARE @Sample TABLE (ID INT, Code VARCHAR(3))INSERT @SampleSELECT 290780, 'LT' UNION ALLSELECT 290780, 'AY' UNION ALLSELECT 290781, 'ILS' UNION ALLSELECT 290780, 'AY'-- Show the expected outputSELECT DISTINCT s1.ID, STUFF((SELECT DISTINCT TOP 100 PERCENT ',' + s2.CODE FROM @Sample AS s2 WHERE s2.ID = s1.ID ORDER BY ',' + s2.CODE FOR XML PATH('')), 1, 1, '') AS CODESFROM @Sample AS s1ORDER BY s1.IDSELECT DISTINCT s1.ID, STUFF((SELECT TOP 100 PERCENT ',' + s2.CODE FROM @Sample AS s2 WHERE s2.ID = s1.ID ORDER BY ',' + s2.CODE FOR XML PATH('')), 1, 1, '') AS CODESFROM @Sample AS s1ORDER BY s1.IDSELECT DISTINCT s1.ID, STUFF((SELECT ',' + s2.CODE FROM @Sample AS s2 WHERE s2.ID = s1.ID FOR XML PATH('') ), 1, 1, '' ) AS CODESFROM @Sample AS s1ORDER BY s1.ID |
 |
|
|
tal.shir
Starting Member
2 Posts |
Posted - 2008-07-04 : 03:34:08
|
| Thanks I'll take a look |
 |
|
|
shaik.zakeer
Posting Yak Master
117 Posts |
Posted - 2008-07-05 : 04:22:05
|
| create table sample( name varchar(20), date datetime, value int)goinsert into sample select 'aa','1/1/2001',1union all select 'aa','2/1/2001',2union all select 'aa','3/1/2001',3union all select 'bb','1/1/2001',10union all select 'bb','2/1/2001',20union all select 'bb','3/1/2001',30union all select 'cc','1/1/2001',50union all select 'cc','2/1/2001',40union all select 'cc','3/1/2001',30union all select 'cc','4/1/2001',20goSELECT date, SUM(CASE WHEN name='aa' THEN value ELSE 0 END) AS value_aa, SUM(CASE WHEN name='bb' THEN value ELSE 0 END) AS value_bb, SUM(CASE WHEN name='cc' THEN value ELSE 0 END) AS value_ccFROM sampleGROUP BY dateThanks |
 |
|
|
|
|
|