PostgreSQL CASE...여러 조건으로 종료
여기 내 표의 발췌본이 있습니다.
gid | datepose | pvc
---------+----------------+------------
1 | 1961 | 01
2 | 1949 |
3 | 1990 | 02
1 | 1981 |
1 | | 03
1 | |
다음을 사용하여 PVC 열을 채우려고 합니다.SELECT CASE
아래와 같이:
SELECT
gid,
CASE
WHEN (pvc IS NULL OR pvc = '') AND datpose < 1980) THEN '01'
WHEN (pvc IS NULL OR pvc = '') AND datpose >= 1980) THEN '02'
WHEN (pvc IS NULL OR pvc = '') AND (datpose IS NULL OR datpose = 0) THEN '03'
END AS pvc
FROM my_table ;
결과는 소스 테이블과 동일한 내용이며 아무 일도 일어나지 않았으며 pg_log 파일에 오류 메시지가 표시되지 않습니다.구문 오류일 수도 있고, WHEN 절 내에서 여러 조건을 사용하는 데 문제가 있을 수도 있습니다.
도움과 조언에 감사드립니다!
이런 종류의 코드는 아마도 당신에게 효과가 있을 것입니다.
SELECT
*,
CASE
WHEN (pvc IS NULL OR pvc = '') AND (datepose < 1980) THEN '01'
WHEN (pvc IS NULL OR pvc = '') AND (datepose >= 1980) THEN '02'
WHEN (pvc IS NULL OR pvc = '') AND (datepose IS NULL OR datepose = 0) THEN '03'
ELSE '00'
END AS modifiedpvc
FROM my_table;
gid | datepose | pvc | modifiedpvc
-----+----------+-----+-------------
1 | 1961 | 01 | 00
2 | 1949 | | 01
3 | 1990 | 02 | 00
1 | 1981 | | 02
1 | | 03 | 00
1 | | | 03
(6 rows)
매개 변수로 전달된 값 앞에 CAST를 수행하고 매개 변수 뒤에 VARCHAR(50)을 삽입해야 합니다. 예: WHEN(숫자는 NULL 또는 pvc = ') 및 (날짜 포즈 < 1980) 다음에 '01'을 VARCHAR(50)로 캐스트합니다.
언급URL : https://stackoverflow.com/questions/27800119/postgresql-case-end-with-multiple-conditions
'programing' 카테고리의 다른 글
EC2 서버의 MongoDB 또는 AWS SimpleDB? (0) | 2023.05.25 |
---|---|
따옴표와 별표가 있는 문자열로 저장된 bash 명령 실행 방법 (0) | 2023.05.25 |
Node.js를 통해 Postgres에 연결하는 방법 (0) | 2023.05.25 |
Git 수정, 삭제 및 추적되지 않은 모든 파일을 추가하시겠습니까? (0) | 2023.05.25 |
Postgre에서 어떤 타임스탬프 유형을 선택해야 합니까?SQL 데이터베이스? (0) | 2023.05.25 |