0

これに似た表があります (もちろん、これは単なるサンプル コンテンツです)。

ID           xml          some_other_value      even_more_values           ....
-------------------------------------------------------------------------------
GUID1        <A />                      1   
GUID1        <A />                                            2
GUID1        <A />                      1                   
GUID2        <B />                      3                     4

グループ化する必要があるフィールドの 1 つに xml コンテンツが含まれている場合、ID でグループ化することは可能ですか? これらの行に重複が存在するか、列の値が null になる可能性がありますが、もちろん、同じ ID に対して異なる値が含まれることはありません。

テーブルを次のようにしたい:

ID           xml          some_other_value      even_more_values            ....
--------------------------------------------------------------------------------
GUID1        <A />                      1                     2
GUID2        <B />                      3                     4

何か案は?

4

4 に答える 4

2

を使用できますrow_number() over()

select *
from (
       select *,
              row_number() over(partition by ID order by (select 0)) as rn
       from YourTable 

     ) T
where T.rn = 1
于 2012-08-17T08:05:59.357 に答える
0

xmlをvarcharに変換し、それでグループ化できます

 group by convert(varchar(max),xml)          
于 2012-08-17T08:06:05.673 に答える
0

たぶん次のようなもの:

select * 
from
    (select 
      id
      ,max(isnull(someothervalue,0)) as someothervalue
      ....
    from table
    group by id) si
cross apply (select top 1 xml from table where id = si.id) xmli(xml)
于 2012-08-17T08:45:23.013 に答える
0

このように試すことができます。xml を varchar に変換する

select distinct t.id,t.xml,t1.first t1,t2.second t2
from test t
inner join test t1 on t1.id=t.id and t1.first is not null
inner join test t2 on t2.id=t.id and t2.second is not null;

フィドル

于 2012-08-17T08:29:23.740 に答える