一共有四张table
第一-客户第二-发票第三-供应商第四-供应商_汇款
表格详情如下所述
| 客户标识|客户账号|客户_状态|供应商_id|供应商_汇款_id|
| - ------| - ------| - ------| - ------| - ------|
| 1个|小行星15|活跃|十一|一百一十一|
| 第二章|小行星1502|未激活|十二|一百一十二|
| 三个|小行星1503|活跃|十三|一百一十三|
| 四个|小行星1504|活跃|十四|一百一十四|
| 五个|小行星1505|未激活|十五|一百一十五|
| 发票_日期|发票_金额|发票_编号|付款方式|客户标识|
| - ------| - ------| - ------| - ------| - ------|
| 2023年1月1日|一百|小行星100000|现金|1个|
| 2022年1月12日|一百五十|一百万零二|信用卡|1个|
| 2022年9月11日|二百|小行星1000003|信用卡|1个|
| 2022年9月12日|三百|小行星1000004|现金|第二章|
| 2022年4月15日|一千|小行星1000005|现金|第二章|
| 2022年4月15日|一千|一百万零六|信用卡|三个|
| 2022年10月31日|二百五十|小行星100000|现金|四个|
| 2022年10月25日|二百五十|小行星10|现金|四个|
| 2022年9月20日|一百三十|小行星|信用卡|五个|
| 2022年5月20日|一百二十|小行星10|信用卡|五个|
| 供应商_名称|供应商_id|
| - ------| - ------|
| 美国广播公司|十一|
| ACCC语言|十二|
| ADEF语言|十三|
| AJKL|十四|
| 空军基地|十五|
| 城市|国家|供应商_汇款_id|供应商_id|
| - ------| - ------| - ------| - ------|
| 波士顿|美国|一百一十一|十一|
| 奥克|美国|一百一十二|十二|
| 奥尔巴尼|美国|一百一十三|十三|
| 麦迪逊|美国|一百一十四|十四|
| 洛斯昂|美国|一百一十五|十五|
我需要帮助查找最近的付款方式、最近的发票金额、本年度(2023年)的发票缺失计数以及上一年度(2022年)的发票缺失计数
我已经编写了查询来查找前几列,但无法进一步编写以获取上述详细信息
select c.customer_id,c.customer_account_number,c.customer_status,sr.country,max(i.invoice_date) as Latest receieved_Invoice_date
from
customer c,
invoice i,
supplier s,
supplier_Remit sr
where
c.customer_status='Active' and
sr.supplier_id=s.supplier_id and
c.supplier_remit_id=sr.supplier_remit_id and
c.customer_id=i.customer_id
group by
c.customer_id,c.customer_account_number,c.customer_status,sr.country;
我的预期输出如下所示
| 客户标识|客户账号|客户_状态|国家|最后_库存_接收_日期|
| - ------| - ------| - ------| - ------| - ------|
| 1个|小行星15|活跃|美国|2023年1月1日|
| 三个|小行星1503|活跃|美国|2022年4月15日|
| 四个|小行星1504|活跃|美国|2022年10月31日|
| 最新_付款_方式|最新_存货_金额|本年缺票数|
| - ------| - ------| - ------|
| 现金|一百|无|
| 信用卡|一千|1个|
| 现金|二百五十|1个|
| 上一年度缺失发票计数|
| - ------|
| 十个|
| 十一|
| 十一|
2条答案
按热度按时间wbgh16ku1#
您可以使用
MAX(...) KEEP (DENSE_RANK LAST ORDER BY invoice_date)
来获取最新发票的值,并使用条件聚合来计算有发票的月份数,然后从总月份数中减去这些值以查找缺少的发票:其中,对于示例数据:
输出:
| 客户ID|客户账号|客户状态|国家|最后发票日期|最新付款方式|最新发票金额|本年度缺少发票|缺少发票去年|
| - ------| - ------| - ------| - ------| - ------| - ------| - ------| - ------| - ------|
| 1个|小行星15|活跃|美国|2023年1月1日00时00分|现金|一百|无|十个|
| 三个|小行星1503|活跃|美国|2022年4月15日00时00分|信用卡|一千|1个|十一|
| 四个|小行星1504|活跃|美国|2022年10月31日上午00时00分|现金|二百五十|1个|十一|
fiddle
inn6fuwd2#
为了找到缺少的内容,首先必须定义应该存在的内容,因此需要创建每个月的日历。然后可以使用发票表的外部连接来查找该客户在该月没有任何记录的地方。有很多方法可以编写SQL来实现这一点。下面是一种方法: