SQL脚本格式化

时间:2013-04-30 18:19:52

标签: sql plsql

我有一张这样的表。 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和字段名称来显示列。

1 个答案:

答案 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