我有这样的数据
Id TagNo CoreNo FromLocation Device FromTerminal
1 1000 1 AA A1 11
2 1000 2 AA A1 12
3 1000 3 AA A2 13
4 1000 4 AA A2 14
5 1001 1 BB T1 10
我想要这个
TagNo CoreNo FromLocation Device FromTerminal
1000 1 AA A1 11
2 12
3 A2 13
4 14
1001 1 BB T1 10
我怎样才能在TSQL / linq中使用它?
答案 0 :(得分:2)
格式化显示数据是使用数据而非数据库的应用程序的作业。 T-SQL中没有特定的命令可以执行您想要的操作。
答案 1 :(得分:0)
可以这样做,但这通常由报告引擎(或类似)处理。
以下查询为每组重复值创建一个行号(ROW_NUMBER)。然后它只通过使用CASE来选择相应行号为1的值。
with mt as (
select
ROW_NUMBER() over (partition by tagNo order by Id) as TagRowNr,
ROW_NUMBER() over (partition by tagNo,FromLoc order by Id) as FromLocRowNr,
ROW_NUMBER() over (partition by tagNo,Device order by Id) as DeviceRowNr,
Id, TagNo, Core, FromLoc, Device, FromTerm
from MyData
)
select
Case when TagRowNr=1 then TagNo else '' end as TagNo,
CoreNo,
Case when FromLocRowNr=1 then FromLoc else '' end as FromLoc,
Case when DeviceRowNr=1 then Device else '' end as Device,
FromTerm
from mt
Order by Id