-- Create a table variable to store user data
DECLARE @myTable TABLE
(
UserName VARCHAR(50),
ArticleName VARCHAR(50)
)
-- Insert some data to table to work on that data
INSERT INTO @myTable(UserName, ArticleName)
VALUES ('Jack', 'ASP.NET')
INSERT INTO @myTable(UserName, ArticleName)
VALUES ('Jack', 'SQL Server')
INSERT INTO @myTable(UserName, ArticleName)
VALUES ('Jack', 'C#')
INSERT INTO @myTable(UserName, ArticleName)
VALUES ('Jack', 'VB.NET')
INSERT INTO @myTable(UserName, ArticleName)
VALUES ('David', 'Java')
INSERT INTO @myTable(UserName, ArticleName)
VALUES ('David', 'Java Beans')
INSERT INTO @myTable(UserName, ArticleName)
VALUES ('David', 'Java script')
SELECT UserName, ArticleName FROM @myTable
-- This is how the table looks after inserting the data
Now I want all the articles related to Jack and David in a single column.
This how we can achieve this
-- Cross join each user with his article. By cross joining we will get all the articles for each user
SELECT DISTINCT A.UserName,Articles FROM @myTable A CROSS APPLY ( -- Now get all the articles for each author in XML SELECT ArticleName + ', ' FROM @myTable B WHERE A.UserName = B.UserName FOR XML Path('') ) AS C (Articles)
The output of the below query is shown below.
-- By applying cross join I can able to get all the articles related with Jack and David.
DECLARE @myTable TABLE
(
UserName VARCHAR(50),
ArticleName VARCHAR(50)
)
-- Insert some data to table to work on that data
INSERT INTO @myTable(UserName, ArticleName)
VALUES ('Jack', 'ASP.NET')
INSERT INTO @myTable(UserName, ArticleName)
VALUES ('Jack', 'SQL Server')
INSERT INTO @myTable(UserName, ArticleName)
VALUES ('Jack', 'C#')
INSERT INTO @myTable(UserName, ArticleName)
VALUES ('Jack', 'VB.NET')
INSERT INTO @myTable(UserName, ArticleName)
VALUES ('David', 'Java')
INSERT INTO @myTable(UserName, ArticleName)
VALUES ('David', 'Java Beans')
INSERT INTO @myTable(UserName, ArticleName)
VALUES ('David', 'Java script')
SELECT UserName, ArticleName FROM @myTable
-- This is how the table looks after inserting the data
Now I want all the articles related to Jack and David in a single column.
This how we can achieve this
-- Cross join each user with his article. By cross joining we will get all the articles for each user
SELECT DISTINCT A.UserName,Articles FROM @myTable A CROSS APPLY ( -- Now get all the articles for each author in XML SELECT ArticleName + ', ' FROM @myTable B WHERE A.UserName = B.UserName FOR XML Path('') ) AS C (Articles)
The output of the below query is shown below.
-- By applying cross join I can able to get all the articles related with Jack and David.
Comments
Post a Comment