CREATE TABLE [dbo].[Users](
[Id] [int] IDENTITY(1,1) NOT NULL,
[UserName] [nvarchar](50) NULL
) ON [PRIMARY]
INSERT INTO [dbo].[Users] VALUES('Unal')
INSERT INTO [dbo].[Users] VALUES('Volkan')
INSERT INTO [dbo].[Users] VALUES('Duygu')
INSERT INTO [dbo].[Users] VALUES('Elif')
INSERT INTO [dbo].[Users] VALUES('Mehmet')
INSERT INTO [dbo].[Users] VALUES('Demir')
CREATE TABLE [dbo].[Agenda](
[Id] [int] IDENTITY(1,1) NOT NULL,
[ActivityName] [nvarchar](50) NULL,
[UserId] [nvarchar](50) NULL
) ON [PRIMARY]
INSERT INTO [dbo].[Agenda] VALUES('school excursion','1,3,4')
INSERT INTO [dbo].[Agenda] VALUES('party','6,2,3,1')
Table Name : Users
Id UserName
1 Unal
2 Volkan
3 Duygu
4 Elif
5 Mehmet
6 Demir
Table Name : Agenda
Id ActivityName UserId
1 school excursion 1,3,4
2 party 6,2,3,1
I want to join Users table with Agenda table.
The Result has to be like below:
Id ActivityName UserId UserNames
1 school excursion 1,3,4 Unal, Duygu, Elif
2 party 6,2,3,1 Demir, Volkan, Duygu, Unal
How can I do it in SQL 2005. I don't want use cursor.
OR
if I can't do that join, I have to do other join that it's below.
Id ActivityName UserId UserNames
1 school excursion 1 Unal
1 school excursion 3 Duygu
1 school excursion 4 Elif
2 party 6 Demir
2 party 2 Volkan
2 party 3 Duygu
2 party 1 Unal
thanks so much for help
What you are attempting to accomplish is a form of denormalization. While it is not a 'straightforward' task in T-SQL, here are links to a couple of approaches that may work for you.
Lists -Field Concatenation, One Field to Itself for string
http://sqlblogcasts.com/blogs/tonyrogerson/archive/2006/07/06/871.aspx
http://www.projectdmx.com/tsql/rowconcatenate.aspx
No comments:
Post a Comment