sql >> データベース >  >> RDS >> PostgreSQL

Postgresqlは複数行でgroupbyします

    これにより、重複が存在するすべての行が返されます。

    SELECT employee_id, leave_date, no_of_days, leave_state
    FROM   hr_holidays_by_calendar h
    WHERE  EXISTS (
       SELECT -- select list can be empty for EXISTS
       FROM   hr_holidays_by_calendar
       WHERE  employee_id = h.employee_id
       AND    leave_date = h.leave_date
       AND    leave_state <> 'refuse'
       AND    ctid <> h.ctid
       )
    AND    leave_state <> 'refuse'
    ORDER  BY employee_id, leave_date;
    

    leave_state <> 'refuse'がどこにあるかは不明です 適用する必要があります。要件を定義する必要があります。私の例では、leave_state = 'refuse'の行を除外しています (およびleave_state IS NULL それで!)完全に。

    ctid は、非公開(未定義?)の主キーの貧乏人の代理です。

    関連:



    1. 1日の各時間の最新のレコードを選択する方法

    2. SQL ServerのDATETIMEタイプで、1/300秒の目盛りで時間を節約できるのはなぜですか?

    3. Symfony2:ベーステーブルまたはビューが見つかりません:1146

    4. Oracle SQL-結合を使用して、別のテーブルではなく、あるテーブルの値を検索する