我已经在名为Employees的表中编译了数据。表定义是
Name Age
Sam 25
Mike 28
是否可以编写一个可以以格式
输出的查询SAM
25
MIKE
28
我无法编写此查询。有可能做到这一点。 如果没有,我怎么能实现这一目标。 我可以使用游标来完成它,但它会大大降低我的proc的性能。
答案 0 :(得分:1)
轻松修改以满足您的需求
exec()
返回
Declare @User table (id int,First_Name varchar(50),Last_Name varchar(50),EMail varchar(50))
Insert into @User values
(1,'John','Smith','john.smith@gmail.com'),
(2,'Jane','Doe' ,'jane.doe@gmail.com')
Declare @XML xml
Set @XML = (Select * from @User for XML RAW)
Select ID = r.value('@id','int')
,Item = Attr.value('local-name(.)','varchar(100)')
,Value = Attr.value('.','varchar(max)')
From @XML.nodes('/row') as A(r)
Cross Apply A.r.nodes('./@*[local-name(.)!="id"]') as B(Attr)
答案 1 :(得分:1)
根据要求,但我认为它没什么价值
Declare @Table varchar(150) = 'YourTableName'
Declare @SQL varchar(max) = '>>>'
Select @SQL = Replace(@SQL + SQL ,'>>>Union All ','')
From (Select Seq=ORDINAL_POSITION,SQL='Union All Select Value=cast(['+Column_Name+'] as varchar(500)) From ['+Table_Schema+'].['+Table_Name+']' From INFORMATION_SCHEMA.COLUMNS where Table_Name=@Table) A
Order By Seq
--Print @SQL
Exec(@SQL)
样品返回
Value
22 Star Ave, Riverside, RI 02915
22 Planet Ave, Riverside, RI 02915
100 Peck Ave, Riverside, RI 02915
1086 Willett Ave, Riverside, RI 02915
4
5
6