0
نمایش چند ستون در یک ستون
سلام
جدول زیر را داریم
CREATE TABLE [dbo].[test]( [ID] [int] IDENTITY(1,1) NOT NULL, [Date] [date] NULL, [Name] [nvarchar](50) NULL, [Type] [nvarchar](50) NULL, CONSTRAINT [PK_test] PRIMARY KEY CLUSTERED ( [ID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO
و داد های زیر وارد کرده ایم
INSERT INTO [dbo].[test] VALUES ('2017-07-23', 'ali','a') INSERT INTO [dbo].[test] VALUES ('2017-07-23', 'ali','b') INSERT INTO [dbo].[test] VALUES ('2017-07-23', 'ali','c') INSERT INTO [dbo].[test] VALUES ('2017-07-23', 'hasan','a') INSERT INTO [dbo].[test] VALUES ('2017-07-24', 'hasan','b') INSERT INTO [dbo].[test] VALUES ('2017-07-24', 'ali','a') INSERT INTO [dbo].[test] VALUES ('2017-07-24', 'ali','c') INSERT INTO [dbo].[test] VALUES ('2017-07-24', 'hasan','c') INSERT INTO [dbo].[test] VALUES ('2017-07-23', 'reza','a') INSERT INTO [dbo].[test] VALUES ('2017-07-24', 'reza','b') INSERT INTO [dbo].[test] VALUES ('2017-07-25', 'reza','c')
می خواهم خروجی زیر را داشته باشیم
Date Name res
2017-07-23 ali abc
2017-07-24 ali ac
2017-07-23 hasan a
2017-07-24 hasan bc
2017-07-23 reza a
2017-07-24 reza b
2017-07-25 reza c
چگونه با کویری مورد نظر را بنویسم
1 پاسخ
1
سلام
<sql>
SELECT
[Name] , [Date] ,
STUFF(
(
SELECT [Type]+'' from
(SELECT [Type] From test WHERE [Name] = Results.[Name] AND [Date] = Results.[Date] ) tb
FOR XML PATH('')
)
, 1, 0, '') res
FROM
test Results
GROUP BY
[Name] , [Date]
<sql>
البته در sql 2017 تابع STRING_AGG اضافه شده که خیلی راحت تر این کار رو میشه انجام داد .