50٪ تخفیف روی تمام دوره‌ها!
پایان تخفیف تا:
مشاهده دوره‌ها
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

چگونه با کویری مورد نظر را بنویسم

پرسیده شده در 1396/06/06 توسط

1 پاسخ

1

سلام

سلام 

||https://dba.tosinso.com/files/get/10e05a58-84de-4b37-9aca-279b452f03cc||

 <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  اضافه شده که  خیلی راحت تر این کار رو میشه انجام داد .

<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 اضافه شده که خیلی راحت تر این کار رو میشه انجام داد .

پاسخ در 1396/06/06 توسط

پاسخ شما