Skip to content

Advanced: Case.. When.. Then..

Tony Jang edited this page Oct 5, 2020 · 1 revision

Case문 내에서 사용된 컬럼 레퍼런스를 추적하는 기능을 제공합니다.

Supported Language

✔ = 지원하는 기능
❌ = 지원하지 않는 기능
⚠ = 지원 예정

MySql PostgreSql JSql Oracle SqlServer

Case 01. CASE {expr} .. WHEN {expr} THEN {expr} .. ELSE {expr}

Example Query

SELECT CASE sample_column1
    WHEN 1 THEN 'Value is 1'
    WHEN 2 THEN 'Value is 2'
    ELSE 'unknown value'
  END
FROM sample_table

Database


Database.Table = sample_db.sample_table

Columns

sample_column1


Expected QSI Tree

Analyze Result

  • {Anonymous expression} (derived)
    • Reference : sample_table.sample_column1
      CASE문에서 사용된 컬럼들을 추적했을때에 CASE문의 비교대상으로 sample_column1이 사용되었으므로 sample_column1이 추적됩니다.

IQsiSwitchCaseExpressionNode에서 ELSE의 경우 Condition이 없고 Consequent만 존재합니다.

Case 02. CASE .. WHEN {condition} THEN {expr} .. ELSE {expr}

Example Query

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_table

Database


Database.Table = sample_schema.sample_db.sample_table

Columns

sample_column1

sample_column2


Expected QSI Tree

Analyze Result

  • {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이 추적됩니다.

Clone this wiki locally