SELECT с группировками

mik121
Дата: 23.02.2013 01:17:12
Есть такие данные. Надо написать select.
Если в группе по col1 -- если есть в col5 значение CA и In-Unit -- тогда рекорд с In-Unit убрать. Если в одной группе одинаковые значения в col5 -- тогда оставить как есть.

Потом из полученного --- если есть рекорды где col1 повторяестся -- то выбрать тот где мах значение символов в col2+col3+col4


col1 col2 col3 col4 col5
aaaaaaaaaaaaaaaaaaaaa dgre 3 gf CA
aaaaaaaaaaaaaaaaaaaaa f 7 rtc In-Unit
aaaaaaaaaaaaaaaaaaaaa dsfcsffs 3 cef CA
bbbbbbbbbbbbbbbbbbbbb urbt 6 In-Unit
bbbbbbbbbbbbbbbbbbbbb vrv 3 csfdxcgfc In-Unit
cccccccccccccccccccc gr22123 4 CA
dddddddddddddddddddd fth 3 vcfrge CA
dddddddddddddddddddd gtrgfthgf 9 CA
eeeeeeeeeeeeeeeeeeee h 7 wfgvc CA
eeeeeeeeeeeeeeeeeeee gbrt 1 In-Unit
Cygapb-007
Дата: 23.02.2013 10:18:42
declare @table table (col1 nvarchar(30),col2 nvarchar(30),col3 nvarchar(30),col4 nvarchar(30),col5 nvarchar(30))
insert @table values
   ('aaaaaaaaaaaaaaaaaaaaa','dgre','3','gf','CA'),('aaaaaaaaaaaaaaaaaaaaa','f','7','rtc','In-Unit'),
   ('aaaaaaaaaaaaaaaaaaaaa','dsfcsffs','3','cef','CA'),('bbbbbbbbbbbbbbbbbbbbb','urbt','6','','In-Unit'),  
   ('bbbbbbbbbbbbbbbbbbbbb','vrv','3','csfdxcgfc','In-Unit'),('ccccccccccccccccccccc','gr22123','4','','CA'),
   ('ddddddddddddddddddddd','fth','3','vcfrge','CA'),('ddddddddddddddddddddd','gtrgfthgf','9','','CA')
   ('eeeeeeeeeeeeeeeeeeeee','h','7','wfgvc','CA'),('eeeeeeeeeeeeeeeeeeeee','gbrt','1','','In-Unit');
with CTE as(
   select top (1) with ties * ,len(col2+col3+col4) lenc
   from @table
   order by DENSE_RANK()over (partition by col1 order by col5)
   )
select * from CTE
where col1+cast(lenc as varchar) in (select col1+cast(max(lenc) as varchar) from CTE group by col1)