2016-06-26 5 views
1

最初に漠然としたタイトルの申し訳はありませんでした。以下の質問では、「truck1」が出席した場所からインシデントを引き出したいと思っています。それだけではなく、他の車両がそれに参加したとき。私は何かがまっすぐ進むと確信していますが、うまくいかない。標準化されていない列に基づいて選択する方法

select 
i.incident_number 
Vehicles, 
countofvehicles 

FROM 

(


SELECT 


i.Incident_Number, 
array_agg(ir.RESOURCE) as vehicle, 
count(ir.RESOURCE) as countofvehicles 



FROM INCIDENT as i 
JOIN RESOURCE as ir on i.Incident_Number = ir.Incident_Number 

--WHERE ir. like '%Truck1%' 

GROUP BY i.Incident_Number) i 

結果

incident_Number  vehicle    countofvehicle 
    1    car1,car2,bike1     3 
    2    car1,car2,truck1    3 
    3    truck1       1 
    4    car1       1 

は、私が使用して、インシデントのみが出席truck1場所を​​確認したい場合はWHERE ir.RESOURCE LIKE「%truck1%のみインシデント番号3およびない事件2、それを戻すだろう他の車両に付随していた。どうすればこの問題を回避できますか?

おかげ

答えて

0

あなたは、ちょうどhaving句このためサブクエリは必要ありません。実際には

SELECT i.Incident_Number, 
     array_agg(ir.RESOURCE) as vehicle, 
     count(ir.RESOURCE) as countofvehicles 
FROM INCIDENT i JOIN 
    RESOURCE ir 
    ON i.Incident_Number = ir.Incident_Number 
GROUP BY i.Incident_Number 
HAVING SUM(CASE WHEN ir.RESOURCE like '%truck1% THEN 1 ELSE 0 END) > 1; 

を専用フィールドあなたがいるので、あなたはおそらく、どちらかjoinを必要としませんINCIDENTからの取り寄せもRESOURCE

SELECT ir.Incident_Number, 
     array_agg(ir.RESOURCE) as vehicle, 
     count(ir.RESOURCE) as countofvehicles 
FROM RESOURCE ir 
GROUP BY ir.Incident_Number 
HAVING SUM(CASE WHEN ir.RESOURCE like '%truck1% THEN 1 ELSE 0 END) > 1; 
関連する問題