Please start any new threads on our new
site at https://forums.sqlteam.com. We've got lots of great SQL Server
experts to answer whatever question you can come up with.
| Author |
Topic |
|
namratadas
Starting Member
4 Posts |
Posted - 2011-06-30 : 19:55:53
|
| I have a table PartOrderId PackOrderId --------- ------------- 1735 4471735 4811736 4471736 4821737 4471737 4821738 4471738 4821739 4471739 4821740 4471740 4821741 4471741 4821742 4471742 4821743 4471743 4821743 4981744 4381744 4471744 4821744 498I have to write a query where for each PartOrderId, concatenate the PackOrderId into one column.ie the expected output should be as follows:PartOrderId Expected result----------- -----------------1735 4474811736 4474821737 4474821738 4474821739 447482I am using sql server 2000. |
|
|
nigelrivett
Master Smack Fu Yak Hacker
3385 Posts |
Posted - 2011-07-01 : 06:34:51
|
| seehttp://www.nigelrivett.net/SQLTsql/CSVStringSQL.htmlselect PartOrderId , csvstr = ( select '' + convert(varchar(20,PackOrderId) from tbl t2 where t.PartOrderId = t2.PartOrderId for xml path('') )from (select distinct PartOrderId from tbl) t==========================================Cursors are useful if you don't know sql.SSIS can be used in a similar way.Beer is not cold and it isn't fizzy. |
 |
|
|
namratadas
Starting Member
4 Posts |
Posted - 2011-07-01 : 13:03:27
|
| I am not sure if i can use XML path in SQL server 2000? This solution might not work for me. |
 |
|
|
jimf
Master Smack Fu Yak Hacker
2875 Posts |
Posted - 2011-07-01 : 14:25:27
|
| DECLARE @table TABLE(PartOrderId int, PackOrderId int)INSERT @table select 1735, 447 union allselect 1735, 481union allselect 1736, 447union allselect 1736 ,482union allselect 1737, 447 union allselect 1737, 482 union allselect 1738, 447 union allselect 1738, 482 union allselect 1739, 447 union allselect 1739, 482 select t1.PartOrderId, convert(varchar(10),t1.PackOrderId) + convert(varchar(10),t2.PackOrderId) from @table t1left join @table t2 on t1.PartOrderId =t2.PartOrderIdJimEveryday I learn something that somebody else already knew |
 |
|
|
pduffin
Yak Posting Veteran
68 Posts |
Posted - 2011-07-01 : 14:53:01
|
| drop table #tmppmd-- create tableselect '1735' as PartOrderId,'447' as PackOrderId,cast(' ' as char(100)) as outvarinto #tmppmdinsert into #tmppmd values ('1735','481',' ')insert into #tmppmd values ('1736','447',' ')insert into #tmppmd values ('1736','482',' ')insert into #tmppmd values ('1737','447',' ')insert into #tmppmd values ('1737','482',' ')insert into #tmppmd values ('1738','447',' ')insert into #tmppmd values ('1738','482',' ')insert into #tmppmd values ('1739','447',' ')insert into #tmppmd values ('1739','482',' ')insert into #tmppmd values ('1740','447',' ')insert into #tmppmd values ('1740','482',' ')insert into #tmppmd values ('1741','447',' ')insert into #tmppmd values ('1741','482',' ')insert into #tmppmd values ('1742','447',' ')insert into #tmppmd values ('1742','482',' ')insert into #tmppmd values ('1743','447',' ')insert into #tmppmd values ('1743','482',' ')insert into #tmppmd values ('1743','498',' ')insert into #tmppmd values ('1744','438',' ')insert into #tmppmd values ('1744','447',' ')insert into #tmppmd values ('1744','482',' ')insert into #tmppmd values ('1744','498',' ') declare @outvar char(100), @PartOrderId char(4) select @PartOrderId = '', @outvar = '' update #TMPPMD set @outvar = outvar = case when @PartOrderId <> PartOrderId then rtrim(PartOrderId) + ' ' + rtrim(PackOrderId) else RTRIM(@outvar) + rtrim(PackOrderId) end, @PartOrderId = PartOrderIdselect max(outvar) as outfrom #tmppmdgroup by partorderid |
 |
|
|
pduffin
Yak Posting Veteran
68 Posts |
Posted - 2011-07-01 : 14:53:56
|
| FYI make sure input table is sorted or results will be unexpected. |
 |
|
|
|
|
|
|
|