一个简单的示例是,您出于给定原因想要对非标准化表进行标准化(但不更改原始表)。假设您有一个名为 Loan_Disbursements 的表,具有以下属性:
LoanID, Disbursement_Date, Disbursement_Amount, Refund_Date, Refund_Amount
您想将其标准化为以下内容(我知道,不是最好的名称):
LoanID, Activity_Date, Activity_Amount, Activity_Name
代码看起来像这样:
SELECT LoanID, Disbursement_Date AS Activity_Date, Disbursement_Amount AS Activity_Amount, 'Disbursement' AS Activity_Name
FROM Loan_Disbursements
UNION ALL
SELECT LoanID, Refund_Date AS Activity_Date, Refund_Amount AS Activity_Amount, 'Refund' AS Activity_Name
FROM Loan_Disbursements
当然,还有其他方法可以在一个 SQL 语句中实现相同的目的(例如使用两个派生表)。但是,您还需要评估查询计划以及性能是否存在差异。
顺便说一句,如果您问“在完美的世界中”,这会在哪里使用 - 这实际上就像问“在完美的世界中”,为什么需要备胎。快二十年了,我还没有找到这个完美的世界。但是,这确实是乐趣的一部分。
我希望这有帮助。
Cheers!