2017-04-04 154 views
2

是否有人可以幫我縮小我的結果? 三個表設施,樣本,位置。使用下面的代碼,我可以得到預期的結果,但我只想顯示矩陣代碼具有多於一個結果(> 1)的記錄。在下面的示例中,我只想顯示位置代碼0689.在其中一個字段中有多個值的情況下選擇記錄

SELECT DISTINCT f.facility_code, 
       l.sys_loc_code, 
       l.loc_type, 
       s.matrix_code 
FROM dt_sample s join dt_location l on l.facility_id = s.facility_id AND l.sys_loc_code = s.sys_loc_code 
JOIN dt_facility f on f.facility_id = l.facility_id 
WHERE l.loc_type ='TS' 
GROUP BY f.facility_code, l.sys_loc_code, l.loc_type, s.matrix_code 
HAVING COUNT(s.matrix_code)>1 
ORDER BY f.facility_code, l.sys_loc_code, s.matrix_code 

facility_code sys_loc_code loc_type matrix_code 
DUR03   0687    TS   WATER   
DUR03   0688    TS   WATER   
DUR03   0689    TS   SEDIMENT  
DUR03   0689    TS   SW   
DUR03   0689    TS   WATER  

感謝您的幫助。

回答

1

一個使用exists(),以檢查是否存在一個給定的facility_idsys_loc_code不同matrix_code選項:

select distinct 
    f.facility_code 
    , l.sys_loc_code 
    , l.loc_type 
    , s.matrix_code 
from dt_sample s 
    inner join dt_location l 
    on l.facility_id = s.facility_id 
    and l.sys_loc_code = s.sys_loc_code 
    inner join dt_facility f 
    on f.facility_id = l.facility_id 
where l.loc_type = 'TS' 
    and exists (
    select 1 
    from dt_sample i 
    where i.facility_id = s.facility_id 
     and i.sys_loc_code = s.sys_loc_code 
     and i.matrix_code <> s.matrix_code 
) 
order by 
    f.facility_code 
    , l.sys_loc_code 
    , s.matrix_code 
+0

我從來沒有用過存在()前。正是我所需要的。謝謝。 –

+0

@SWalden樂意幫忙! – SqlZim

相關問題