Con*_*eak -3 sql sql-server sql-server-2005
我有一个看起来像这样的数据集:
Gender | Age | Name
Male | 30 | Bill
Female | 27 | Jenny
Female | 27 | Debby
Male | 44 | Frank
Run Code Online (Sandbox Code Playgroud)
我试图将其显示为特殊格式的HTML代码:
<ul>
<li>Male
<ul>
<li>30
<ul>
<li>Bill</li>
</ul>
</li>
<li>44
<ul>
<li>Frank</li>
</ul>
</li>
</ul>
</li>
</ul>
<ul>
<li>Female
<ul>
<li>27
<ul>
<li>Jenny</li>
<li>Debby</li>
</ul>
</li>
</ul>
</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
我试过使用,FOR XML
但没有给出我想要的结果.它没有删除多个Gender
和Age
返回的字段.正如您在此HTML中看到的那样,它将所有内容复合在一起,并且只在末端节点上提供重复项.
Aaron Bertrand在这里提供了一个很好的方法返回选择语句作为格式化的HTML,似乎在SQL 2008中完美运行,但我在寻找一些在2005年也能运行的东西,除了小东西,比如+=
运算符和设置默认的DECLARE值,只是没有在2005年展出.
如何在SQL Server 2005中实现这样的功能?
declare @T table
(
Gender varchar(10),
Age int,
Name varchar(10)
)
insert into @T values ('Male', 30, 'Bill')
insert into @T values ('Female', 27, 'Jenny')
insert into @T values ('Female', 27, 'Debby')
insert into @T values ('Male', 44, 'Frank')
select Gender as 'li',
(select T2.Age as 'li',
(select T3.Name as 'li'
from @T as T3
where T2.Age = T3.Age and
T1.Gender = T3.Gender
for xml path(''), root('ul'), type) as 'li'
from @T as T2
where T1.Gender = T2.Gender
group by T2.Age
for xml path(''), root('ul'), type) as 'li'
from @T as T1
group by Gender
for xml path('ul')
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7477 次 |
最近记录: |