반응형
필드가 null이면 특정 필드를 당기고, 그렇지 않으면 다른 필드를 당깁니다.
저는 다음 표를 가지고 있습니다.
TestTable
ColumnA
Column1
Column2
Column3
Column4
컬럼 A를 확인하고 null 여부에 따라 특정 컬럼을 반환하는 간단한 SQL 문을 작성하고자 합니다.
(사이비) 같은 것:
If ColumnA Is Null
SELECT ColumnA, Column1, Column2
FROM TestTable
Else
SELECT ColumnA, Column3, Column4
FROM TestTable
무슨 생각 있어요?
SQL CASE 식을 사용합니다.
SELECT
ColumnA,
CASE WHEN ColumnA IS NULL THEN Column1 ELSE Column3 END AS ColumnB,
CASE WHEN ColumnA IS NULL THEN Column2 ELSE Column4 END AS ColumnC
FROM
TestTable
참조:
CASE(SQL-Server Transact-SQL)
CASE 식(오라클)
몇 가지 경로를 생각해 볼 수 있지만, 어떤 경로도 반드시 예쁜 것은 없습니다.
사람들은 종종 첫번째 것을 찾고 나서 더 나은 것을 찾습니다.저는 정말로 더 좋은 것이 있을지 잘 모르겠습니다.
SELECT
ColumnA,
CASE WHEN ColumnA IS NULL THEN Column1 ELSE Column2 END AS ColumnB,
CASE WHEN ColumnA IS NULL THEN Column3 ELSE Column4 END AS ColumnC
FROM
yourTable
아니면...
SELECT
yourTable.ColumnA,
subTable.ColumnB,
subTable.ColumnC
FROM
yourTable
CROSS APPLY
(
SELECT yourTable.Column1 AS ColumnB, yourTable.Column3 AS ColumnC WHERE yourTable.ColumnA IS NULL
UNION ALL
SELECT yourTable.Column2 AS ColumnB, yourTable.Column4 AS ColumnC WHERE yourTable.ColumnA IS NOT NULL
)
AS subTable
아니면...
SELECT
ColumnA,
Column1 AS ColumnB,
Column2 AS ColumnC
FROM
yourTable
WHERE
ColumnA IS NULL
UNION ALL
SELECT
ColumnA,
Column2 AS ColumnB,
Column4 AS ColumnC
FROM
yourTable
WHERE
ColumnA IS NOT NULL
이 특별한 고양이의 가죽을 벗기는 또 다른 방법:
SELECT ColumnA,
NVL2(ColumnA, Column3, Column1),
NVL2(ColumnA, Column4, Column2)
FROM TestTable
나누어서 즐겨요.
언급URL : https://stackoverflow.com/questions/10214554/if-field-is-null-pull-certain-fields-otherwise-pull-other-fields
반응형
'programing' 카테고리의 다른 글
도커 네트워킹 - nginx: [emerg] 호스트가 업스트림에서 찾을 수 없음 (0) | 2023.09.20 |
---|---|
WooCommerce의 My Accounts 페이지에 제품명 및 구매 노트 표시 (0) | 2023.09.20 |
xs란 무엇입니까?NCName 타입과 사용 시기는? (0) | 2023.09.15 |
누군가가 내 데이터베이스를 해킹했어요 - 어떻게요? (0) | 2023.09.15 |
struct addrinfo와 struct sockaddr의 차이점은 무엇입니까? (0) | 2023.09.15 |