2013-03-12 5 views
0

У меня есть таблица, как такойВыбор отдельных записей

custno, type, color 
A1234, B, Red 
A1234, C, Blue 
A1277, B, Red 
A1288, A, Black 
A1288, B, Red 
A1289, A, Black 

Мне нужно получить только уникальные записи A1277 и A1289, которые можно найти только один раз.

ответ

2

Это будет отображать custNO в списке результатов,

SELECT custNo 
FROM tableName 
GROUP BY custNO 
HAVING COUNT(*) = 1 

, но если вы хотите получить весь ряд,

SELECT a.* 
FROM tableName a 
     INNER JOIN 
     (
      SELECT custNo 
      FROM tableName 
      GROUP BY custNO 
      HAVING COUNT(*) = 1 
     ) b ON a.custNo = b.custNo 
+0

Как я мог тогда выбрать только те, где Type = «B» – macunte

+0

это то, что вы хотите? http://sqlfiddle.com/#!2/d53e0/3 –

+0

Да, хорошо выглядит. У меня есть таблица клиентов CTABLE, связанная с custNo, где я бы разместил это соединение? Я попытался добавить в конец внутреннего соединения, но это уменьшило мой результат. – macunte

0

Попробуйте это, так как это позволит предотвратить дорогостоящие присоединиться operation--

SELECT custno,type,color FROM ( SELECT custno, type, color, COUNT(custno) OVER(PARTITION BY custno) CNT FROM tableName )TMP WHERE CNT=1

Смежные вопросы