2011-12-16 3 views

ответ

4

Если вы просто хотите конкретныеref1, вы можете использовать:

select header_key from yrs_table where ref1 = 42 

Однако, я подозреваю, что вы после всех строк, которые разделяют значение ref1. Если это так, то первый шаг, чтобы получить список всех ref1 значений, где есть более чем один:

select ref1 from yrs_order group by ref1 having count(*) > 1 

Затем вы можете использовать это в качестве подзапроса, чтобы получить список всех строк:

select header_key, ref1 from yrs_order where ref1 in (
    select ref1 from yrs_order group by ref1 having count(ref1) > 1 
) 

следующая запись показывает это в действии:

> CREATE TABLE PAX1 (HDR_KEY INT PRIMARY KEY NOT NULL, REF1 INT); 
Table created. 

> INSERT INTO PAX1 (HDR_KEY, REF1) VALUES 
>> (0,0), (1,1), (2,1), (3,1), (4,1), (5,2), (6,2), (7,3), (8,4), (9,4); 
10 rows inserted. 

> SELECT * FROM PAX1 ORDER BY HDR_KEY ASC; 
HDR_KEY REF1 
======= ==== 
     0  0 
     1  1 
     2  1 
     3  1 
     4  1 
     5  2 
     6  2 
     7  3 
     8  4 
     9  4 
======= ==== 
10 rows fetched. 

это показывает создание A го населения таблицы, в настоящее время для запроса с просьбой:

> SELECT REF1, HDR_KEY FROM PAX1 WHERE REF1 IN (
>> SELECT REF1 FROM PAX1 GROUP BY REF1 HAVING COUNT(*) > 1 
>> ) ORDER BY REF1 ASC, HDR_KEY ASC; 
REF1 HDR_KEY 
==== ======= 
    1   1 
    1   2 
    1   3 
    1   4 
    2   5 
    2   6 
    4   8 
    4   9 
==== ======= 
8 rows fetched. 

Вы можете там увидеть, что две строки с отсчетом одного, были исключены.

+0

«выберите header_key, ref1 из yrs_order где ref1 in ( выберите ref1 из группы yrs_order по ref1, имеющему счет (ref1)> 1 )« это ват я искал ... извините за ответ позже .. был на офис..thnx много – 2FaceMan

0
SELECT * 
FROM yrs_order 
WHERE ref1 = 1 

Замените 1 так, чтобы ref1 был равен. Это перечислит все значения ref1 с указанным вами значением.

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