استفاده از مقادیر یک جدول به عنوان نام ستون های جدول دیگر در 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)
برچسب ها