SQL Server将客户2023年1到9月序时账, 2023年10到12月序时账导入SQL并拼到一起,并将凭证日期改为年/月/日格式,新增一列JE Amount(即借方-贷方)
时间: 2024-10-25 21:09:55 浏览: 28
在SQL Server中,你可以通过UNION ALL操作或者使用CASE WHEN语句结合DATE_FORMAT函数来实现这个需求。首先,假设你有两个表,`CustomerTransactions_Quarter1_9`和`CustomerTransactions_Quarter4`,分别对应2023年1月至9月和10月至12月的数据。以下是一个基本的示例:
```sql
-- 创建新表,将两个季度数据合并
CREATE TABLE NewTransactions AS
(
SELECT * FROM CustomerTransactions_Quarter1_9
UNION ALL
SELECT * FROM CustomerTransactions_Quarter4
);
-- 将凭证日期转换为'年/月/日'格式
UPDATE NewTransactions
SET TransactionDate = DATE_FORMAT(TransactionDate, '%Y/%m/%d')
-- 新增JE Amount列,计算借方金额和贷方金额之差
ALTER TABLE NewTransactions
ADD COLUMN JEAmount DECIMAL(10,2),
ADD COLUMN IsDebit bit;
UPDATE NewTransactions
SET
JEAmount = CASE WHEN Debit > Credit THEN Debit - Credit ELSE NULL END,
IsDebit = CASE WHEN Debit > Credit THEN 1 ELSE 0 END
WHERE Debit IS NOT NULL AND Credit IS NOT NULL;
```
在这个例子中,我们先创建了一个新的表`NewTransactions`,然后更新了交易日期格式。接着,我们添加了一列`JEAmount`来存储借方金额和贷方金额之间的差异,并使用CASE WHEN语句来判断每一笔交易是借记还是贷记。
注意:
1. 这个查询假设你的原始数据表有`TransactionDate`、`Debit`和`Credit`字段,其中`Debit`代表借方金额,`Credit`代表贷方金额。
2. 如果借贷双方有的交易金额可能为零,那么`JEAmount`可能会为负数。如果你希望只显示正数,可以在`CASE`语句中加上额外的条件处理。
3.
阅读全文