gpt4 book ai didi

sql - 根据值从结果集中选择特定记录

转载 作者:行者123 更新时间:2023-12-01 11:56:11 25 4
gpt4 key购买 nike

我有一个查询试图编译费用和信用报告,按项目代码和计费周期分组。它从中提取的费用表具有以下格式:

BillingPeriod|ItemCode|ItemName|Charge|IsAdjustment|AdjustmentDate|ReportTimestamp

我遇到了一些问题,我认为我当前的查询处理得很好。由于有时账单代码不会出现在收费表中,因为我们没有为此付费,但我想要一个显示每个账单周期的统一表格,所以我制作了一个充满账单周期和零的虚拟表格,并将其与 Charges 表中的结果合并,如下所示:

SELECT BillingPeriod, SumOfCharge AS Total FROM (
SELECT BillingPeriod, 0 AS SumOfCharge
FROM Charges
UNION
SELECT BillingPeriod, SUM(Charge) AS SumOfCharge
FROM Charges
WHERE (ItemCode Between 1900 and 1995)
GROUP BY BillingPeriod
);

那么最终发生的事情是这样的:比如说,我在 2011 年 1 月和 3 月收取了一笔费用,但没有其他费用。该表将返回如下输出:

BillingPeriod|Charge
1/1/2011 |100.00
1/1/2011 |0
2/1/2011 |0
3/1/2011 |0
3/1/2011 |-23.00
4/1/2011 |0
5/1/2011 |0
6/1/2011 |0
7/1/2011 |0

我想做的是去掉那些值为 0 的行并选择正确的行显示在报告中。唯一棘手的部分是这些值可能是正数、负数或零,因此仅执行 MAX 是行不通的。我还尝试了 FIRST() 或 LAST(),(COALESCE()) 不起作用,我可以 Access )。任何帮助将不胜感激。

最佳答案

只需对 SumOfCharge 字段求和并按 BillingPeriod 分组:

SELECT BillingPeriod, SUM(SumOfCharge) AS Total FROM (
SELECT BillingPeriod, 0 AS SumOfCharge
FROM Charges
UNION
SELECT BillingPeriod, SUM(Charge) AS SumOfCharge
FROM Charges
WHERE (ItemCode Between 1900 and 1995)
GROUP BY BillingPeriod
) GROUP BY BillingPeriod;

关于sql - 根据值从结果集中选择特定记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7000642/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com