Projectsテーブル

workorder_id| step_nbr | step_status
------------+----------+-------------
 AA100      |        0 | C
 AA100      |        1 | W
 AA100      |        2 | W
 AA200      |        0 | W
 AA200      |        1 | W
 AA300      |        0 | C
 AA300      |        1 | C
(7 rows)
C :作業完了 ,W:作業待機

問題:工程番号0番のみ完了している作業依頼IDを求める


Kungさんの答え

SQL文

select workorder_id
from projects
where  step_status = 'C'
group by workorder_id
having count(workorder_id) = 1;

考え方

 ①Projectsから作業完了しているすべての作業依頼IDを求める
 ②workorder_idでグルーピングして、having を使って一つだけ完了している作業依頼を求める

結果

workorder_id
--------------
 AA100
(1 row)

感想

 where step_status = 'C'で'C'の小文字の'c'で実行したらエラーが出てしまいました
 PostgreSQLでは大文字と小文字は区別されていないのでは??

 -> コマンドは大文字と小文字を区別しないが、データは区別されている。
   しかし、「lower」また「lcase」を使って小文字に変換できる。例えば、、、

select step_status , lower(step_status)
from projects;
結果
 step_status | lower
-------------+-------
 C           | c
 W           | w
 W           | w
 W           | w
 W           | w
 C           | c
 C           | c
(7 rows)
最終更新:2008年06月05日 13:11