2013-11-10 40 views
0

我有這樣處理上TSQL命令

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?

回答

2

格式化顯示的數據是使用數據的應用程序的作業,而不是數據庫。在T-SQL中沒有特定的命令來執行你想要的操作。

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