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