2

在我的第一个表A中,我有需要显示的数据,但显示顺序与此处的不同。显示顺序取决于第二个表B中的位置。我希望位置最低的字段排在第一位,并带有名称价格

  Field_21     Field_31    field_41
    112            wed         www
    111            tue         dse
    123             sun        edwd




    Name            POSITION         Name
    Field_31           2              ask
    Field_21           1              bid
    Field_41           0              price

最终数据就像

price      bid         ask
www        112         wed
dse        111         tue
edwd       123         sun
4

1 回答 1

3

尝试以下操作:

DECLARE @tbl VARCHAR(60), @sql VARCHAR(8000)

SET @tbl = 'tblData' -- change for the table                     

SELECT @sql = 'SELECT '
              + STUFF(
                         (
                           SELECT      ', ' + ColumnName + ' as ' + ColumnLabel
                           FROM       columnOrder
                           ORDER BY Position
                           FOR XML PATH('')
                         )
                      , 1, 1, ''
                     )
              + ' FROM '
              + @tbl


--SELECT @sql
EXEC (@sql)

请注意,一个表中不能有 2 个名为 [name] 的列,我使用 ColumnName 和 ColumnLabel,

看到这个 sqlfiddle

于 2014-07-01T12:24:03.650 回答