当前位置: 代码迷 >> Sql Server >> 请SQL好手指教
  详细解决方案

请SQL好手指教

热度:53   发布时间:2016-04-27 11:22:08.0
请SQL高手指教
1张表内容如下:
假设表明为TEMP
ID NAME STATUS
1 A 0
2 A 1
3 A 0
4 B 1
5 B 1
6 C 1
需求如下:
3个字段内容都需要,相同NAME只取一条记录,ID作为主键与其他表关联,条件为STATUS全部为1才取出唯一NAME的记录,如果其中有1条记录STATUS为0,在下表中就不显示该条记录,也就是说上表输出结果为:
ID NAME STATUS
4 B 1
6 C 1

我自己能想出来的只有以子表形式,然后用NOT IN或者NOT EXISTS,求效率更高,更简单的语句
请高手指教,谢谢~

------解决方案--------------------
SQL code
with TEMP(ID,NAME,STATUS) as(select 1,'A',0union all select 2,'A',0union all select 3,'A',1union all select 4,'B',1union all select 5,'B',1union all select 6,'C',1)select min(ID) ID,NAME,max(STATUS) STATUS from TEMPgroup by NAMEhaving min(STATUS)=1/*ID          NAME STATUS----------- ---- -----------4           B    16           C    1(2 行受影响)*/
  相关解决方案