I have a table called F0008 Schema. It has 14 columns where I could find a start date (in JDE Date format) which could tell me from the column name what month number it is in our financial year.
Here is an example of what will return 4 for me for a Testdate of 120314 which resolves to 9th Nov 2020:
DECLARE @TestDate INT
SET @TestDate = 120314
SELECT CASE
WHEN F0008.CDD01J >= @TestDate THEN 1
WHEN F0008.CDD02J >= @TestDate THEN 2
WHEN F0008.CDD03J >= @TestDate THEN 3
WHEN F0008.CDD04J >= @TestDate THEN 4
WHEN F0008.CDD05J >= @TestDate THEN 5
WHEN F0008.CDD06J >= @TestDate THEN 6
WHEN F0008.CDD07J >= @TestDate THEN 7
WHEN F0008.CDD08J >= @TestDate THEN 8
WHEN F0008.CDD09J >= @TestDate THEN 9
WHEN F0008.CDD10J >= @TestDate THEN 10
WHEN F0008.CDD11J >= @TestDate THEN 11
WHEN F0008.CDD12J >= @TestDate THEN 12
WHEN F0008.CDD13J >= @TestDate THEN 13
WHEN F0008.CDD14J >= @TestDate THEN 14
END AS int_num
FROM [ODS].[PRODDTA].[F0008] F0008
where F0008.CDDTPN = 'B'
and F0008.CDFY = 20
I then have an orders table called F42119 Schema. This table has a column in it called SDIVD which is the update date in JDE format. I can get a range of dates from this table like so:
SELECT distinct F42119.SDIVD
FROM [ODS].[PRODDTA].[F42119] F42119
WHERE F42119.SDIVD BETWEEN 120314 AND 120334
order by 1
What I need to do is combine the results of these two queries so when I pull a list of dates from F42119 I can also pull the corosponding result of the case statement from F0008.
In short I need to know the financial month number for any transaction on F42119.
Is there anything preventing you from throwing it into a subquery, other than it looks terrifying?