0

私はこのようなデータを持っています

 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に入れることができますか?

4

2 に答える 2

2

表示用にデータをフォーマットすることは、データベースではなく、データを使用するアプリケーションの仕事です。T-SQL には、必要なことを行うための特定のコマンドはありません。

于 2013-11-10T08:39:56.207 に答える
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
于 2013-11-10T08:47:55.703 に答える