需求:
儅目標數據來源比較複雜的時候,例如目標數據來自多個複雜查詢的時候,可以采用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