یادداشت های یک برنامه نویس
دوستدار فرهنگ و هنر کهن ایرانی

استفاده از مقادیر یک جدول به عنوان نام ستون های جدول دیگر در SQL Server

به عنوان مثال فرض کنید جدولی به نام BillValue به صورت زیر داریم:

Day B01 B02 B03 B04 B05
13980101 260.7804 3.776 1222449 5049557 6291352
13980102 10948229 117903.3 117903.3 1222449 1.3523
13980103 252.5359 4.637 0.1542 1166393 1591904
13980104 241.4057 17.838 1465784 1936231 22.5441
13980105 257.2262 0.416 11.2721 4029248 9813842
13980106 314.8713 60.389 8777679 1222449 1166393
13980107 333.3405 78.411 10948229 117903.3 41.934
13980108 299.0284 41.934 5462575 1512431 5049557
13980109 309.6516 54.108 8305829 3448523 1222449

 

و جدول دیگری به نام BillItem با مقادیر زیر:

ID Code Name
1 B01 عنوان اول
2 B02 عنوان دوم
3 B03 عنوان سوم
4 B04 عنوان چهارم
5 B05 عنوان پنجم
6 B06 عنوان ششم

 

و خروجی جدول BillValue را به صورت زیر میخواهیم (استفاده از نام های موجود در جدول BillItem در عناوین ستون):

روز عنوان اول عنوان دوم عنوان سوم عنوان چهارم عنوان پنجم
13980101 260.7804 3.776 1222448.755 5049557.166 6291351.897
13980102 10948229 1103.2923 117903.2923 1222448.755 1.3523
13980103 252.5359 4.637 0.1542 1166393.003 1591904.099
13980104 241.4057 17.838 1465783.853 1936231.087 22.5441
13980105 257.2262 0.416 11.2721 4029247.862 9813842.363
13980106 314.8713 60.389 8777678.859 1222448.755 1166393.003
13980107 333.3405 78.411 10948228.63 117903.2923 41.934
13980108 299.0284 41.934 5462574.683 1512430.574 5049557.166
13980109 309.6516 54.108 8305828.626 3448523.055 1222448.755

 

کد لازم برای انجام این کار:

DECLARE @Column nVARCHAR(Max) 
SELECT @Column = COALESCE(@Column + ', ', '') + Code + ' AS [' + [Name]  +']'
FROM BillItem where Code in 
(SELECT COLUMN_NAME FROM  INFORMATION_SCHEMA.COLUMNS Where TABLE_NAME='BillValue')

DECLARE @query varchar(MAX);
set @query =
        (
        'SELECT  Day As [زور], ' + @Column + '  FROM BillValue'
        )
execute(@query)

 

دیدگاه ها: ارسال دیدگاه
سیما
بسیار عالی
نازی
عالیه مرسییییی