困难的“案例”和 datediff sql 查询

difficult "case when" and datediff sql query

提问人:John Maygee 提问时间:8/21/2023 最后编辑:SternKJohn Maygee 更新时间:8/22/2023 访问量:24

问:

我正在尝试使此查询工作:

(case 
when R.DateofRepairInvoice is not null and [Last Repairs Rcvd] is null 
        then isnull(convert(varchar,(DATEDIFF((Case when Format(R.DateofRepairInvoice, 'dd') <= '24' 
                then EOMONTH ( R.DateofRepairInvoice ,0 ) 
                else DATEFROMPARTS(YEAR(DATEADD(M,1,R.DateofRepairInvoice))
                    ,MONTH(DATEADD(M,1,R.DateofRepairInvoice)
                    ,15))), getdate())),103),'') end) as [Repair Cash Days]

基本上,当满足条件时,计算查询案例与今天日期之间的日期差。 我只是不断得到红色的波浪线:

Screenshot

无论我在哪里添加或删除括号和/或逗号,似乎都缺少一些东西。谁能为我指出如何纠正此查询的正确方向?

案例 日期差异

评论

0赞 M S 8/21/2023
括号看起来不一致 - 这是MSSQL还是PostrgreSQL?
0赞 John Maygee 8/21/2023
这是 MSSQL - 我已经尝试了各种使用括号的方法,但还无法破解它。
0赞 John Maygee 8/22/2023
我在这里没有得到任何帮助。我将关闭此查询。
0赞 M S 8/22/2023
尝试 ' R.DateofRepairInvoice 不为 NULL 且 [Last Repairs Rcvd] 为 NULL 的情况 THEN DATEDIFF(DAY, CASE WHEN DAY(R.DateofRepairInvoice) <= 24 THEN EOMONTH(R.DateofRepairInvoice, 0) ELSE DATEFROMPARTS(YEAR(DATEADD(MONTH, 1, R.DateofRepairInvoice)), MONTH(DATEADD(MONTH, 1, R.DateofRepairInvoice)), 15) END, GETDATE() ) ELSE NULL END AS [Repair Cash Days] '

答: 暂无答案