WITH SHIIRE AS 公用表表达式

66 阅读2分钟

需求: 儅目標數據來源比較複雜的時候,例如目標數據來自多個複雜查詢的時候,可以采用WITH SHIIRE AS先將所需數據抽取出來,形成結果集,再在主查詢裏面對結果集裏的數據進行篩選和查詢

知識點: WITH SHIIRE AS 是 SQL 语句中的一种公用表表达式(Common Table Expression,简称 CTE)的定义。CTE 用于在一个复杂查询中定义一个临时结果集,这个结果集可以在后续的查询中多次引用,从而使查询更加清晰和易读

WITH
CTE1 AS (
    -- CTE1 的查询
    SELECT column1, column2, ...
    FROM table1
    WHERE condition1
),
CTE2 AS (
    -- CTE2 的查询
    SELECT column3, column4, ...
    FROM table2
    WHERE condition2
),
CTE3 AS (
    -- CTE3 的查询
    SELECT column5, column6, ...
    FROM table3
    WHERE condition3
)
-- 主查询
SELECT *
FROM CTE1
JOIN CTE2 ON CTE1.some_column = CTE2.some_column
JOIN CTE3 ON CTE2.some_other_column = CTE3.some_other_column
WHERE final_condition;

附加知識點

    --1.提取字符串 `日期字段` 的前 6 个字符并将其转换为整数,然后检查它是否大于或等于202406
    CAST(LEFT (日期字段, 6) AS INT) >= 202406 
    
    --2. 两个日期字段中选取一个不为空的字段,然后提取日期字符串的前 6 个字符
    LEFT(COALESCE(日期字段1, 日期字段2), 6) AS 別名
    
    --3.使用 `CASE` 表达式根据 `KUBUN` 列的值来返回不同的文本标签,并将结果命名为 `KUBUN_NMEI`。
        --具体来说,这个 `CASE` 表达式将 `KUBUN` 列的整数值转换为相应的文本描述
    CASE 
    WHEN KUBUN = 1 
        THEN '商品'  -- 如果 KUBUN 等于 1,返回 '商品'
    WHEN KUBUN = 2 
        THEN '材料'    -- 如果 KUBUN 等于 2,返回 '材料'
    WHEN KUBUN = 3 
        THEN '半成品'  -- 如果 KUBUN 等于 3,返回 '半成品'
    ELSE ''            -- 如果 KUBUN 不等于 1、2 或 3,返回空字符串
    END AS KUBUN_NMEI      -- 将结果列命名为 KUBUN_NMEI