如何解决如何在同一行中以“棒”分隔的同一功能名称显示不同的功能值?
我使用sql Server 2012,但遇到一个问题:我无法在一行结果中获得所有不同的值功能,如果它们有多个差异,则用粘性分隔。
如果只有一个与众不同,那就不用棍子了。
我实际上需要显示C部分和X部分的特征值,其中C的特征值不等于X且都不等于Null。
如果有多个差异,它将显示在用棍子隔开的一行上。
那我该怎么办?
process.MoveWindow()
最终结果:
create table #replace
(
PartIdc int,PartIdx int,)
insert into #replace (PartIdc,PartIdx)
values (1211,1300),(2000,2200),(3000,3100),(4150,4200)
create table #FeatureNameandValues
(
PartId int,FeatueName nvarchar(20),FeaatureValue int
)
insert into #FeatureNameandValues (PartId,FeatueName,FeaatureValue)
values (1211,'Weight',5),'Tall',20),70),190),(1211,80),(1300,10),(3100,'Size',150),(4200,130),20)
附加的文件说明:
http://www.mediafire.com/file/mxyr8wr9k98za7o/ExplainReport.xlsx/file
解决方法
您可以使用以下内容进行操作
;With cte As
(Select f1.PartId,f1.FeatueName,f1.FeatueName + ' (' + Cast(f1.FeaatureValue As varchar(10)) + '-' + Cast(f2.FeaatureValue As varchar(10)) + ')' As ValueRange
From #FeatureNameandValues f1
Inner Join #replace r On f1.PartId = r.PartIdc
Inner Join #FeatureNameandValues f2 On f2.PartId = r.PartIdx And f1.FeatueName = f2.FeatueName)
Select Stuff(
(Select ' | ' + ValueRange From cte Order By PartId,FeatueName
For XML Path(''),Type)
.value('text()[1]','varchar(max)'),1,3,'');
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。