sql - SQL | 将商店现金与银行现金匹配
问题描述
!- 我不是在寻找可以完成这项工作的付费软件(因为太贵了)
我们在现金管理方面存在与价值相匹配的问题。
我有两个 SQL 表,我们称之为SHOP_CASH和BANK_CASH
1) 匹配应基于 ShopName-CashAmount-Date。
2)在这里我遇到了两个问题
现金应该四舍五入到最接近的 50 英镑,理想情况下,12 400 和 12 499 应该四舍五入到 12 450,或者这只是IDEAL是基于小于 50 的现金差额的匹配,如果差额为小于 50,匹配它们,但这是如何匹配值的问题.. 这只是愚蠢的想法))???嗯……卡住了。
日期,店铺可以在几天后提现,所以需要根据提现日期(例如2018-10-26)与银行日期RANGE 2018-10-26到(+7天)2018-11-加入02
目前,我不明白在这种情况下匹配的可能方式(逻辑)。任何计算/加入的逻辑路径将不胜感激
尝试: 假设我可以按 SHOPNAME 加入两个表 - 很酷然后我将尝试按日期加入,这可能是:
SELECT * FROM SHOP_CASH AS SC
LEFT JOIN BANK_CASH AS BC
ON SC.SHOP_NAME_SC = BC.SHOP_NAME_BC
AND SC.DATE_SC = (ANY DATE FROM SC.DATE_SC TO SC.DATE_SC (+7 DAYS) = TO DATE_BC - not sure how)
AND FLOOR(SC.CASH_SC / 50) * 50 = FLOOR(BC_CASH_BC / 50) * 50
PS对于这个项目将使用谷歌大查询。
这是我的(临时解决方案)
WITH MAIN AS(SELECT
CMS.Store_name AS STORE_NAME,
CMS.Date AS SHOP_DATE,
CMB.ENTRY_DATE AS BANK_DATE,
SUM(CMS.Cash) AS STORE_CASH,
SUM(CMB.AMOUNT) AS BANK_CASH
FROM `store_data` CMS
LEFT JOIN `bank_data` AS CMB
ON CMS.store_name = CMB.STRAIGHT_LOOKUP
AND FLOOR(CMS.Cash / 50) * 50 = FLOOR(CMB.AMOUNT / 50) * 50
AND CAST(FORMAT_DATE("%F",CMB.ENTRY_DATE) AS STRING) > CAST(FORMAT_DATE("%F",CMS.Date) AS STRING)
AND CAST(FORMAT_DATE("%F",CMB.ENTRY_DATE) AS STRING) <= CAST(FORMAT_DATE("%F",DATE_ADD(CMS.Date, INTERVAL 4 day)) AS STRING)
GROUP BY STORE_NAME,SHOP_DATE,BANK_DATE)
SELECT
MAIN2.*
FROM (
SELECT
ARRAY_AGG(MAIN ORDER BY MAIN.SHOP_DATE ASC LIMIT 1)[OFFSET(0)] AS MAIN2
FROM
MAIN AS MAIN
GROUP BY MAIN.SHOP_DATE, MAIN.STORE_CASH)
解决方案
这是一个非常有趣的案例。
您尚未提供任何示例数据,因此我无法对其进行测试,但这可能会奏效。由于不确定日期格式,可能需要进行一些修改。让我知道是否有问题。
SELECT * FROM SHOP_CASH AS SC
LEFT JOIN BANK_CASH AS BC
ON SC.SHOP_NAME_SC = BC.SHOP_NAME_BC
AND SC.DATE_SC BETWEEN BC.DATE_BC AND DATE_ADD(BC.DATE_BC, DAY 7)
AND trunc(SC.CASH_SC, -2) + 50 = trunc(BC.CASH_BC,2) + 50
推荐阅读
- react-native - 需要未知模块“3”
- python - 使用掩码中的轮廓从原始图像中获取 ROI 的有效方法
- html - Arraylist 到 html 表
- angular - Angular 中的响应无法读取 API 响应中未定义的属性
- angular - 根据函数的参数创建对象
- javascript - React Native 导航中全屏模式的“无法读取未定义的属性导航”
- r - Ubuntu AWS 和 Ubuntu 笔记本电脑中 R 程序的不同行为
- python - Python:使用循环遍历电子表格的一列,将其插入 url,然后保存数据
- assembly - 我有一个问题要求使用 MARS 4.5 模拟器使用 MIPS 汇编语言反转数组
- excel - 为什么有时一行代码可以工作但下一行代码不行