当前位置: 代码迷 >> Sql Server >> 请问高难度SQL,优先选择记录有关问题,用,
  详细解决方案

请问高难度SQL,优先选择记录有关问题,用,

热度:60   发布时间:2016-04-27 18:38:30.0
请教高难度SQL,优先选择记录问题,急用,在线等!
表中假如记录如下,有三列值,第一列为名称,可能存在相同,查询结果要求只能查出名称唯一记录,第三列为特殊标记,如果存在特殊标记为'zz'的记录则取该条记录,如果不存在,则取值为''的记录.
aa xx ' '
aa ww zz
bb dd ' '
cc yy ' '
cc mm zz

即希望的结果是
aa ww zz
bb dd ' '
cc mm zz

------解决方案--------------------
SQL code
-->生成测试数据 declare @tb table([col] nvarchar(2),[col2] nvarchar(2),[col3] nvarchar(2))Insert @tbselect N'aa',N'xx','' union allselect N'aa',N'BB','' union all   -- 如果有重复....select N'aa',N'ww',N'zz' union allselect N'bb',N'dd','' union allselect N'cc',N'yy','' union allselect N'cc',N'mm',N'zz'Select t.[col],min(t.[col2]) as [col2],t.[col3] from @tb t where col3 = (select case when max(col3)='zz' then 'zz' else '' end from @tb where [col] = t.[col])group by t.[col],t.[col3]order by t.[col]/*col  col2 col3---- ---- ----aa   ww   zzbb   dd   cc   mm   zz(3 row(s) affected)*/
  相关解决方案