简体   繁体   中英

Sql - Calculate Inventory Days

I'm trying to calculate inventory day's over time. I have an issue getting the actual amount of day's in inventory for the last month. So as for the first row, the 9 days is correct. However the second row should show 34. Since I want to calculate the days between Inv_date and "today's" Date. Let's presume when I'm writing this, today's date is '2021-03-25'.

So I have a table such as:

Transdate Inv_Date Purch_Date InvDays
2021-02-01 00:00:00.000 20210219 Null 9
2021-03-01 00:00:00.000 20210219 Null 40

What I'm expecting is:

Transdate Inv_Date Purch_Date InvDays
2021-02-01 00:00:00.000 20210219 Null 9
2021-03-01 00:00:00.000 20210219 Null 34

My Sql-script for the InvdDays calculation is:

case when left(Getdate(),8) >= left(convert(varchar,Transdate,112),8) then 
datediff(day,Inv_date,
dateadd(day,-1,dateadd(month,1,Transdate))
)
else 
isnull(ABS(DATEDIFF(day, Inv_date, isnull(Purch_Date, Getdate()))),0) end as InvDaysStandQty

Hmmm. . . I speculate that you want the number of days from the last day of transdate and inv_date . That would be something like this:

select datediff(day, inv_date,
                (case when convert(date, getdate()) < eomonth(transdate)
                      then getdate() else eomonth(transdate)
                 end)
                )

There might be an off-by-1 error, because you haven't actually explained the logic.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM