-1

我有一张这样的桌子。用户 ID、FNAME、LNAME、出生日期。我想写一个脚本,这样我就可以以一种非常特殊的方式输出数据。我希望它看起来像这样:

前任。

UserID | FName
1      | Bob
2      | John
3      | Matt


USERID | lname
1    | Bobski
2    | Johnski
3    | Mattski


USERID | DOB
1      |june 1
2      | june2
3      | june 3

我需要 sciplet 像这样显示它,这包括获取用户 ID 和字段名称以显示列。

4

1 回答 1

0

如果我了解您要查找的内容,则以下内容应该有效。它允许您根据传递给@colName 的内容来确定要返回的字段(连同 USER_ID)。只需将所需的字段名称放在引号中(在变量声明处)。

declare @SQL nvarchar(max),
    @colName sysname = ''

set @SQL = 'SELECT USER_ID, @colName
        FROM TABLE'

set @SQL = replace(@SQL,'@colName',@colName)

exec(@SQL)

更新:既然我知道您在寻找什么,请尝试以下操作。可能有更好的方法,但这会遍历表上的所有字段(USER_ID 除外)并为每个字段运行一个选择。我应该注意,我不确定这在 PL/SQL 的语法上是否正确(只是注意到这就是你要问的)。

declare @SQL nvarchar(max),
    @colName sysname

declare colCursor cursor for

select c.name
from sys.columns c with(nolock)
join sys.tables t with(nolock)
    on c.object_id = t.object_id
where t.name = 'TABLE'

except

select 'USER_ID'

open colCursor
fetch next from colCursor into @colName
while @@FETCH_STATUS = 0

begin

set @SQL = 'SELECT USER_ID, @colName
            FROM TABLE'

set @SQL = replace(@SQL,'@colName',@colName)

exec(@SQL)

fetch next from colCursor into @colName

end

close colCursor
deallocate colCursor
于 2013-04-30T18:24:51.450 回答