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