我是 SQL 新手,不知道我正在寻找我想要完成的任务的关键字。
以下是我原来的 WHERE 子句:
FROM myTable
INNER JOIN distinctTable DT on DT.[ID] = myTable.[ID]
WHERE myTable.[Category] = '1520'
In this query, it'll give me all values for myTable.[FiscalYear]
我在这里尝试做的是对于 DT.[ID] = myTable.[ID] 上的 INNER JOINdistinctTable DT 中的每个项目,在给定的 WHERE 子句中,我想进一步“过滤”它的具体内容财政年度
举个例子,假设在 DT.[ID] 中我有相应日期的值(请注意,最后一列在distinctTable中不可用。这只是为了让您知道财政年度是什么)
身份证 | 截止日期 | 对应财政年度(6月开始,5月结束) |
---|---|---|
A101 | 2022-04-21 | 22 财年 |
B505 | 2024-12-10 | 25 财年 |
假设 myTable 为每个成本代码保存 5 个会计年度(FY20 到 FY24),鉴于上面我原来的 WHERE 子句,我将有 10 条记录用于 1 个成本代码。
身份证 | 财政年度 | 费用代码 | 金额 |
---|---|---|---|
A101 | 20 财年 | 成本代码 1 | 10 |
A101 | 21财年 | 成本代码 1 | 20 |
A101 | 22 财年 | 成本代码 1 | 30 |
A101 | 23 财年 | 成本代码 1 | 40 |
A101 | 24 财年 | 成本代码 1 | 50 |
B505 | 20 财年 | 成本代码 1 | 100 |
B505 | 21财年 | 成本代码 1 | 200 |
B505 | 22 财年 | 成本代码 1 | 300 |
B505 | 23 财年 | 成本代码 1 | 400 |
B505 | 24 财年 | 成本代码 1 | 500 |
我的问题是,如何才能只返回每个ID的相关会计年度,以便优化刷新速度?
身份证 | 财政年度 | 费用代码 | 金额 |
---|---|---|---|
A101 | 22 财年 | 成本代码 1 | 30 |
B505 | 24 财年 | 成本代码 1 | 500 |
请注意,财政周期月份从 6 月开始,到 5 月结束。 即 Jun2024 - May2025 是 2025 财年
INNER JOINdistinctTable DT on DT.[ID] = myTable.[ID] AND DatePart(yy,[关闭日期])='22'