【发布时间】:2017-08-19 12:41:54
【问题描述】:
我在工作日计算方面需要帮助。
我有两张桌子
1) 一张表ACTUAL_TABLE 包含订单日期和联系日期以及时间戳数据类型。
2) 第二张表BUSINESS_DATES 列出了每个日历日期,并有一个标志表示周末。
使用这两个表,我需要确保在这两个字段之间计算工作日而不是日历日(这是当前逻辑)。
我的想法是首先通过比较ORDER_DATE 和TABLE_DATE 字段来获得一系列日期,然后对CONTACT_DATE 和TABLE_DATE 字段进行类似的比较。这将使我从BUSINESS_DATES 表中获得一个范围,然后我可以使用它来计算天数,sum(Holiday_WKND_Flag) 字段使结果看起来像:
Order# | Count(*) As DAYS | SUM(WEEKEND DATES)
100 | 25 | 8
但是,这仅在我使用特定订单号并且不能将所有订单号带入子查询时才有效。
我的查询:
SELECT SUM(Holiday_WKND_Flag), COUNT(*) FROM
(
SELECT
* FROM
BUSINESS_DATES
WHERE BUSINESS.Business BETWEEN (SELECT ORDER_DATE FROM ACTUAL_TABLE
WHERE ORDER# = '100'
)
AND
(SELECT CONTACT_DATE FROM ACTUAL_TABLE
WHERE ORDER# = '100'
)
TEMP
正在上传表结构供您参考。
【问题讨论】: