0

我有一个类似这样的表(当然,这只是示例内容):

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

当应该分组的字段之一包含 xml 内容时,是否可以按 ID 分组?这些行中可能存在重复项,或者列值可以为空,但当然它们从不包含相同 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

你可以试试这样。将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 回答
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 回答