PDA

View Full Version : نمایش ستونها بصورت یک سطر



Iran58
چهارشنبه 27 مرداد 1395, 19:24 عصر
سلام
فرض کنید جدول زیر را داریم

CREATE TABLE [dbo].[test۳] (
[ID] [int] IDENTITY(۱,۱) NOT NULL,
[Date] [date] NULL,
[Name] [nvarchar](۵۰) NULL,
[Price] [int] 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('۲۰۱۶-۰۵-۰۱','a',۱۰۰)
insert into [dbo].[test۳] values('۲۰۱۶-۰۵-۰۲','a',۱۰۱)
insert into [dbo].[test۳] values('۲۰۱۶-۰۵-۰۳','a',۱۰۲)
insert into [dbo].[test۳] values('۲۰۱۶-۰۵-۰۱','b',۱۰۳)
insert into [dbo].[test۳] values('۲۰۱۶-۰۵-۰۲','b',۱۰۴)
insert into [dbo].[test۳] values('۲۰۱۶-۰۵-۰۳','b',۱۰۵)
insert into [dbo].[test۳] values('۲۰۱۶-۰۵-۰۱','c',۱۰۶)
insert into [dbo].[test۳] values('۲۰۱۶-۰۵-۰۲','c',۱۰۷)
insert into [dbo].[test۳] values('۲۰۱۶-۰۵-۰۳','c',۱۰۸)
insert into [dbo].[test۳] values('۲۰۱۶-۰۵-۰۱','d',۱۰۹)
insert into [dbo].[test۳] values('۲۰۱۶-۰۵-۰۲','d',۱۱۰)
insert into [dbo].[test۳] values('۲۰۱۶-۰۵-۰۳','d',۱۱۱)
insert into [dbo].[test۳] values('۲۰۱۶-۰۵-۰۱','e',۱۱۲)
insert into [dbo].[test۳] values('۲۰۱۶-۰۵-۰۲','e',۱۱۳)
insert into [dbo].[test۳] values('۲۰۱۶-۰۵-۰۳','e',۱۱۴)



حال من کوئری می خواهم که جواب زیر را به من برگرداند


Date a b c d e
۲۰۱۶-۰۵-۰۱ ۱۰۰ ۱۰۳ ۱۰۶ ۱۰۹ ۱۱۲
۲۰۱۶-۰۵-۰۲ ۱۰۱ ۱۰۴ ۱۰۷ ۱۱۰ ۱۱۳
۲۰۱۶-۰۵-۰۳ ۱۰۲ ۱۰۵ ۱۰۸ ۱۱۱ ۱۱۴



البته تعداد Name ها هردفعه تغییر می کند و تعدادمشخصی ندارد



باسپاس

daffy_duck376
پنج شنبه 28 مرداد 1395, 08:47 صبح
حذف پاسخ -------بّرداشت اشتباه از سوال ایشان

یوسف زالی
پنج شنبه 28 مرداد 1395, 20:17 عصر
سلام.
این اسکریپت رو تست کنید:




DECLARE @Qry VARCHAR(max) = 'select Date'


select @Qry += ', max(case when name = ''' + Name + ''' then Price end) as [' + NAME + ']'
FROM test3
GROUP BY Name


SET @Qry += CHAR(13) + 'from test3' + CHAR(13) + 'group by Date'


EXEC(@Qry)

Iran58
شنبه 30 مرداد 1395, 08:10 صبح
سلام.
این اسکریپت رو تست کنید:




DECLARE @Qry VARCHAR(max) = 'select Date'


select @Qry += ', max(case when name = ''' + Name + ''' then Price end) as [' + NAME + ']'
FROM test3
GROUP BY Name


SET @Qry += CHAR(13) + 'from test3' + CHAR(13) + 'group by Date'


EXEC(@Qry)

سلام و باتشکر از جواب شما
حال اگر در کنار ستون تاریخ مثلا بخواهیم نام روز هم داشته باشیم چگونه می توانیم از این کد استفاده کنیم

Iran58
سه شنبه 16 مرداد 1397, 10:01 صبح
سلام
دوستان متاسفانه مشکل هنوز پابرجاست

حال اگر در کنار ستون تاریخ مثلا بخواهیم نام روز هم داشته باشیم چکار باید بکنم