کمک در نوشتن یک کوئری CrossTab
سلام
من یه جدول فرم دارم که درون فیلدهای متغیری ذخیره میشن
مانند 3 فیلد زیر.که این فیلدها داینامیکه و ممکنه بیشتر بشه
https://barnamenevis.org/attachment.p...0&d=1385400922
و جدولی هم دارم که به ازای هر فیلد یک مقدار ذخیره میشه
وقتی کاربر اطلاعات یک فرم که شامل اطلاعات جدول بالا هست را وارد میکنه درون جدول زیر ذخیره میشه و به اون یک formid اختصاص میده
https://barnamenevis.org/attachment.p...1&d=1385400954
حالا میخوام از این دو جدول چینن خروجی تهیه کنم
https://barnamenevis.org/attachment.p...2&d=1385401136
تا اونجایی که فهمیدم باید این گزارش را از طریق CrossTab ایجاد کنم.
سمپل های زیادی دیدم.ولی نتونستم ازش استفاده کنم.شرمنده ولی سواد sql زیادی ندارم
در ضمن اکثرا مثال ها واسه جداول با فیلدهای ثابت بود.اما فیلدهای جدول من داینامیکه
با تشکر
نقل قول: کمک در نوشتن یک کوئری CrossTab
امتحان کنید:
--حل مساله کراس تبینگ داینامیک
--تعریف یک جدول از نوع موقت
create table #sample
(
id int not null primary key,
cntName varchar(50) not null
);
--درج داده های آزمایشی
insert into #sample (id, cntName)
values (1002, 'نام'), (1003, 'فامیل'), (1004, 'سن');
--تعریف یک جدول از نوع موقت
create table #sampleTable
(
id int not null primary key,
groupid int not null,
cntID int not null,
cntValue varchar(500) not null
);
--درج داده های آزمایشی
insert #sampleTable(id, groupid, cntID, cntValue)
values (1, 1, 1002, 'حسن'),
(2, 1, 1003, 'رضایی'), (3, 1, 1004, '30');
--تعریف بدنه ی کوئری بصورت داینامیک
declare @sql varchar(4000) = '';
select @sql += ',max(case when cntID = ' + cast(id as varchar(50)) + ' then cntValue end) as ['+ cntName +']'+char(13)
from #sample
set @sql =
'select groupid, ' + stuff(@sql,1,1,'') +
'from #sampleTable
group by groupid;'
--اجرای رشته کوئری تولید شده در مرحله قبل
execute (@sql)
--حذف جداول موقت
drop table #sample, #sampleTable
نقل قول: کمک در نوشتن یک کوئری CrossTab
سلام
یه دنیا ممنون.نمیدونم چطور ازتون تشکر کنم.کل پروژم معطل همین کوئری بود.
خیلی لطف کردین.
نقل قول: کمک در نوشتن یک کوئری CrossTab
نمیشه روی DECLARE @cc TABLE
از نوع DECLARE نوشت؟