-
Notifications
You must be signed in to change notification settings - Fork 8
Advanced: Case.. When.. Then..
Tony Jang edited this page Oct 5, 2020
·
1 revision
Case문 내에서 사용된 컬럼 레퍼런스를 추적하는 기능을 제공합니다.
✔ = 지원하는 기능
❌ = 지원하지 않는 기능
⚠ = 지원 예정
| MySql | PostgreSql | JSql | Oracle | SqlServer |
|---|---|---|---|---|
| ✔ | ✔ | ✔ | ✔ | ✔ |
SELECT CASE sample_column1
WHEN 1 THEN 'Value is 1'
WHEN 2 THEN 'Value is 2'
ELSE 'unknown value'
END
FROM sample_tableDatabase.Table = sample_db.sample_table
Columns
sample_column1
-
IQsiDerivedTableNode
-
Columns-
IQsiColumnsDeclarationNode
-
Columns-
IQsiDerivedColumnNode
-
Expression-
IQsiSwitchExpressionNode
-
Value-
IQsiColumnExpressionNode
-
Column - IQsiDeclaredColumnNode
-
Name=sample_column1
-
-
IQsiColumnExpressionNode
-
Cases-
IQsiSwitchCaseExpressionNode
-
Condition - IQsiLiteralExpressionNode
-
Value=1 -
Type=Decimal -
Consequent - IQsiLiteralExpressionNode
-
Value='Value is 1' -
Type=String
-
-
IQsiSwitchCaseExpressionNode
-
Condition - IQsiLiteralExpressionNode
-
Value=2 -
Type=Decimal -
Consequent - IQsiLiteralExpressionNode
-
Value='Value is 2' -
Type=String
-
-
IQsiSwitchCaseExpressionNode
-
Consequent - IQsiLiteralExpressionNode
-
Value='Value is unknown' -
Type=String
-
-
IQsiSwitchCaseExpressionNode
-
-
IQsiSwitchExpressionNode
-
-
IQsiDerivedColumnNode
-
-
IQsiColumnsDeclarationNode
-
Source-
IQsiTableAccessNode
-
Identifier=sample_table
-
-
IQsiTableAccessNode
-
-
{Anonymous expression} (derived)
- Reference :
sample_table.sample_column1
CASE문에서 사용된 컬럼들을 추적했을때에 CASE문의 비교대상으로sample_column1이 사용되었으므로sample_column1이 추적됩니다.
- Reference :
IQsiSwitchCaseExpressionNode에서 ELSE의 경우 Condition이 없고 Consequent만 존재합니다.
SELECT CASE
WHEN sample_column1 = '1' THEN 'sample_column1 is 1'
WHEN sample_column2 = '2' THEN 'sample_column2 is 2'
ELSE 'unknown value'
END
FROM sample_tableDatabase.Table = sample_schema.sample_db.sample_table
Columns
sample_column1
sample_column2
-
IQsiDerivedTableNode
-
Columns-
IQsiColumnsDeclarationNode
-
Columns-
IQsiDerivedColumnNode
-
Expression-
IQsiSwitchExpressionNode
-
Cases-
IQsiSwitchCaseExpressionNode
-
Condition - IQsiLogicalExpressionNode
-
Left - IQsiColumnExpressionNode
-
Column - IQsiDeclaredColumnNode
-
Name=sample_column1 -
Operator== -
Right - IQsiLiteralExpressionNode
-
Value='1' -
Type=String -
Consequent - IQsiLiteralExpressionNode
-
Value='sample_column1 is 1' -
Type=String
-
-
IQsiSwitchCaseExpressionNode
-
Condition - IQsiLogicalExpressionNode
-
Left - IQsiColumnExpressionNode
-
Column - IQsiDeclaredColumnNode
-
Name=sample_column2 -
Operator== -
Right - IQsiLiteralExpressionNode
-
Value='2' -
Type=String -
Consequent - IQsiLiteralExpressionNode
-
Value='sample_column2 is 2' -
Type=String
-
-
IQsiSwitchCaseExpressionNode
-
Consequent - IQsiLiteralExpressionNode
-
Value='unknown value' -
Type=String
-
-
IQsiSwitchCaseExpressionNode
-
-
IQsiSwitchExpressionNode
-
-
IQsiDerivedColumnNode
-
-
IQsiColumnsDeclarationNode
-
Source-
IQsiTableAccessNode
-
Identifier=sample_table
-
-
IQsiTableAccessNode
-
-
{Anonymous expression} (derived)
- Reference :
sample_table.sample_column1
CASE문에서 사용된 컬럼들을 추적했을때에 첫번째 WHEN절의 비교대상으로sample_column1이 사용되었으므로sample_column1이 추적됩니다. - Reference :
sample_table.sample_column2
CASE문에서 사용된 컬럼들을 추적했을때에 두번째 WHEN절의 비교대상으로sample_column2이 사용되었으므로sample_column2이 추적됩니다.
- Reference :