PDA

View Full Version : کسی واسه convert این دو به هم راه حلی داره



hamed_bostan
شنبه 19 اسفند 1385, 10:08 صبح
با سلام
من یه table دارم که به این شکله:



FRM_ID(int),CNTRL_ID(int),CNTRL_VLU(nvarchar(100), RCRD_SMI(int)


مقدار ها برابر است با:


رکورد اول
FRM_ID=1,CNTRL_ID=100,CNTRL_VLU=hamed,CNTRL_SMI=1
رکورد دوم
FRM_ID=1,CNTRL_ID=101,CNTRL_VLU=25,CNTRL_SMI=1
رکورد سوم
FRM_ID=1,CNTRL_ID=102,CNTRL_VLU=yazd,CNTRL_SMI=1
رکورد چهارم
FRM_ID=1,CNTRL_ID=100,CNTRL_VLU=reza,CNTRL_SMI=2
رکورد پنجم
FRM_ID=1,CNTRL_ID=101,CNTRL_VLU=40,CNTRL_SMI=2
رکورد ششم
FRM_ID=1,CNTRL_ID=102,CNTRL_VLU=shiraz,CNTRL_SMI=2


می خوام اگه ممکنه استورد پروسیجری بهم بدین که این جدول رو تبدیل کنه به :



CNTRL_SMI,CNTRL_VLU_1,CNTRL_VLU_2,CNTRL_VLU_3




رکورد اول :
1- hamed-25-yazd
2-reza-40-shiraz


ممکنه تعداد ستون های جدول temp(جدول دوم) بر اساس CNTRL_SMI ها متغیر باشه
ممنون

hamed_bostan
شنبه 19 اسفند 1385, 13:02 عصر
در اصل جدول اول نمایش ستونی جدول دوم هست
در ستون اول اطلاعات ستون ها 3 تا 3 تا فیلدی داره تکرار میشه اما در جدول temp به وجود آمده به صورت درست جدولی نمایش داده میشه .

AminSobati
شنبه 19 اسفند 1385, 19:00 عصر
اگر در SQL Server 2005 کار میکنید، با نوشتن User Defined Aggregate این کار بسیار عالی و با سرعت مطلوب انجام میشه. روشی که براتون نوشتم برای 2000 کاربرد داره ولی من چون این جدول رو نساختم برای خودم، لذا تضمینی در درست کار کردنش نیست! ولی میدونم شما با استعداد خودتون قادر هستین در صورت نیاز اصلاحش کنین:



select t1.CNTRL_VLU+str(t2.CNTRL_VLU)+t3.CNTRL_VLU from
(select * from MyTab where CNTRL_ID=100) t1
join
(select * from MyTab where CNTRL_ID=101) t2
on t1.CNTRL_SMI=t2.CNTRL_SMI
join
(select * from MyTab where CNTRL_ID=102) t3
on t2.CNTRL_SMI=t3.CNTRL_SMI

hamed_bostan
یک شنبه 20 اسفند 1385, 10:14 صبح
از لطفی که بهم دارین ممنونم . ضمنا اسنفاده کردم و جواب داد . ممنونم