!- Я не ищу платное программное обеспечение, которое будет выполнять эту работу (слишком дорого)
У нас есть проблема с управлением денежными средствами, чтобы соответствовать значениям.
У меня есть две таблицы SQL, давайтеназовите его SHOP_CASH и BANK_CASH
1) Соответствие должно происходить на основе ShopName-CashAmount-Date.
2) Здесь я столкнулся с двумявыпуски
Денежные средства должны быть округлены до ближайших 50 фунтов стерлингов, в идеале, 12 400 и 12 499 должны округляться до 12 450, ИЛИ это просто ИДЕАЛ сопоставлять на основе разницы в денежной наличности, которая меньше 50, сушить, чтобы соответствовать разному значению, если разница меньше 50, сопоставить их, но вот вопрос, как сопоставить это значение ... это просто глупые идеи)) ???Хммм ... застрял.
Даты, магазин может обналичить деньги через несколько дней, поэтому необходимо присоединиться, основываясь на дате обналичивания (например, 2018-10-26) сДата банка ДИАПАЗОН 2018-10-26 до (+7 дней) 2018-11-02
В настоящее время я не понимаю возможный (логический) способ сопоставления в этих обстоятельствах.Любой логический путь расчета / объединения будет чрезвычайно полезен
TRY: Допустим, я могу объединить две таблицы по 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 Для этого проекта будет использоваться Google Big Query.
Это мое (временное решение)
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)