SQL语句格式化与字段重命名优化笔记

学习笔记作者:admin日期:2025-09-17点击:11

摘要:本笔记总结了对复杂SQL语句进行格式化和字段名称修改的过程,包括使用CASE语句处理账期类型、优化嵌套逻辑结构以及将收款1-5字段重命名为收款6-10。通过缩进、换行、别名明确等方法提升可读性,并提供长期维护建议。

SQL语句格式化与字段重命名优化

1. SQL语句格式化

      原始的SQL语句存在嵌套层级较深、逻辑不清晰的问题,通过对代码进行缩进、换行和关键字大写处理,使结构更易理解。


CASE
    WHEN m.账期类型 = '货到付款' THEN
        s.欠款

    WHEN m.账期类型 = '票到付款' THEN
        CASE
            WHEN s.开票_日期 IS NULL THEN
                0
            ELSE
                ISNULL(s.[开票_金额], 0)
                - ISNULL(
                    CASE
                        WHEN s.[收款1_日期] <= yq.逾期日期 THEN s.[收款1_金额]
                        ELSE 0
                    END, 0
                )
                - ISNULL(
                    CASE
                        WHEN s.[收款2_日期] <= yq.逾期日期 THEN s.[收款2_金额]
                        ELSE 0
                    END, 0
                )
                - ISNULL(
                    CASE
                        WHEN s.[收款3_日期] <= yq.逾期日期 THEN s.[收款3_金额]
                        ELSE 0
                    END, 0
                )
                - ISNULL(
                    CASE
                        WHEN s.[收款4_日期] <= yq.逾期日期 THEN s.[收款4_金额]
                        ELSE 0
                    END, 0
                )
                - ISNULL(
                    CASE
                        WHEN s.[收款5_日期] <= yq.逾期日期 THEN s.[收款5_金额]
                        ELSE 0
                    END, 0
                )
        END
END AS [欠款]

2. 字段名称修改

      为了满足业务需求,需要将原有的“收款1”至“收款5”字段改为“收款6”至“收款10”。以下是修改后的SQL片段:

s.[收款6_日期],
CASE
    WHEN s.[收款6_日期] <= yq.逾期日期
    THEN s.[收款6_金额]
    ELSE 0
END AS [收款6_金额], 

s.[收款7_日期],
CASE
    WHEN s.[收款7_日期] <= yq.逾期日期
    THEN s.[收款7_金额]
    ELSE 0
END AS [收款7_金额], 

s.[收款8_日期],
CASE
    WHEN s.[收款8_日期] <= yq.逾期日期
    THEN s.[收款8_金额]
    ELSE 0
END AS [收款8_金额], 

s.[收款9_日期],
CASE
    WHEN s.[收款9_日期] <= yq.逾期日期
    THEN s.[收款9_金额]
    ELSE 0
END AS [收款9_金额], 

s.[收款10_日期],
CASE
    WHEN s.[收款10_日期] <= yq.逾期日期
    THEN s.[收款10_金额]
    ELSE 0
END AS [收款10_金额],

3. 替换规则说明

原始字段 替换后字段
收款1 收款6
收款2 收款7
收款3 收款8
收款4 收款9
收款5 收款10

4. 注意事项

  • 确保目标表中确实存在名为“收款6_日期”、“收款6_金额”等字段,否则查询会报错。
  • 如果字段数量较多,建议考虑数据库设计是否可以规范化,避免重复字段。

5. 长期维护建议

      对于类似“收款1-5”的字段,建议考虑将数据拆分为明细表,例如创建一个“收款记录表”,然后通过JOIN和聚合函数处理,减少重复逻辑。

SELECT 
    s.订单ID,
    SUM(CASE WHEN r.收款日期 <= yq.逾期日期 THEN r.金额 ELSE 0 END) AS 已收金额
FROM 主表 s
LEFT JOIN 收款记录 r ON s.订单ID = r.订单ID
GROUP BY s.订单ID

6. 总结

      通过格式化SQL语句和调整字段名称,提升了代码的可读性和可维护性。同时,建议在长期项目中优化数据库设计,以提高效率和扩展性。

上一篇      下一篇