对 SELECT 个结果行执行数学运算
Performing math on SELECT result rows
我有一个 table 来存放客户余额,我需要能够看到账户数字何时比上个月每个账户的余额下降了一定百分比。
我的输出包括帐户 ID、year_month 组合代码和月末余额。所以我想看看 2 月份的余额是否比 1 月份下降了 X%,以及 1 月份的余额是否比 12 月份下降了相同的百分比。如果它确实掉线了,那么我希望能够看到它掉落了哪些 year_month 代码,是的,我可以拥有一个包含多个掉线的帐户,我希望看到这一点。
有人知道如何在 SQL 内执行此操作吗?
编辑:根据要求添加一些示例数据。在 table 上,我正在查看我有 year_month 作为列,但我也可以访问每个月的最后一个工作日日期
account_id | year_month |期末余额
1 | 2016-1 | 50000
1 | 2016-2 | 40000
1 | 2016-3 | 25
当期末余额比上个月至少下降 50% 时,我希望看到的输出是 year_month 代码。
首先,我建议将 Year_Month 设为 yyyy-mm-dd 格式的日期用于此计算。然后获取当前 table 并将其连接到自身,但您连接的日期将是前一个月。然后在 select 中执行您的计算。所以你可以在下面做这样的事情。
SELECT x.*,
x.EndingBalance - y.EndingBalance
FROM Balances x
INNER JOIN Balances y ON x.AccountID = y.AccountID
and x.YearMonth = DATEADD(month, DATEDIFF(month, 0, x.YearMonth) - 1, 0)
我有一个 table 来存放客户余额,我需要能够看到账户数字何时比上个月每个账户的余额下降了一定百分比。
我的输出包括帐户 ID、year_month 组合代码和月末余额。所以我想看看 2 月份的余额是否比 1 月份下降了 X%,以及 1 月份的余额是否比 12 月份下降了相同的百分比。如果它确实掉线了,那么我希望能够看到它掉落了哪些 year_month 代码,是的,我可以拥有一个包含多个掉线的帐户,我希望看到这一点。
有人知道如何在 SQL 内执行此操作吗?
编辑:根据要求添加一些示例数据。在 table 上,我正在查看我有 year_month 作为列,但我也可以访问每个月的最后一个工作日日期
account_id | year_month |期末余额
1 | 2016-1 | 50000
1 | 2016-2 | 40000
1 | 2016-3 | 25
当期末余额比上个月至少下降 50% 时,我希望看到的输出是 year_month 代码。
首先,我建议将 Year_Month 设为 yyyy-mm-dd 格式的日期用于此计算。然后获取当前 table 并将其连接到自身,但您连接的日期将是前一个月。然后在 select 中执行您的计算。所以你可以在下面做这样的事情。
SELECT x.*,
x.EndingBalance - y.EndingBalance
FROM Balances x
INNER JOIN Balances y ON x.AccountID = y.AccountID
and x.YearMonth = DATEADD(month, DATEDIFF(month, 0, x.YearMonth) - 1, 0)