我有一张这样的表。 USERID,FNAME,LNAME,DOB。我想编写一个脚本,以便以非常特殊的方式输出数据。我希望它看起来像这样:
离。
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和字段名称来显示列。
答案 0 :(得分: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除外)并为每个字段运行一个select。我应该注意到,我不确定这对于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