SQL Server + 每个项目的 WHERE 子句上的“FILTER”

问题描述 投票:0回答:1

我是 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 财年

sql-server
1个回答
0
投票

INNER JOINdistinctTable DT on DT.[ID] = myTable.[ID] AND DatePart(yy,[关闭日期])='22'

© www.soinside.com 2019 - 2024. All rights reserved.