get datediff()使用max()作为输入

cdmah0mi  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(273)

为了获得两个值之间的最大值,我使用以下公式:

SELECT 
    (SELECT MAX(cost)
     FROM (VALUES (cost_tran_recur.date_start),(GETDATE())) AS Allcosts(cost))
FROM
    cost_tran_recur

而且效果很好。但是当我尝试在 datediff ,我得到一个错误:

SELECT
    (amount_expense * DATEDIFF(m, SELECT (SELECT MAX(cost)
                                          FROM (VALUES (cost_tran_recur.date_start),(GETDATE())) AS Allcosts(cost))
                                  FROM cost_tran_recur,  date_end)) AS TOTALS 
FROM
    (SELECT ......) AS table1

有什么建议吗?

ubby3x7f

ubby3x7f1#

我觉得你把东西放在这里太多了。看起来您要编写的查询是:

SELECT 
    amount_expense * DATEDIFF(
        m,
        (
            SELECT MAX(cost)
            FROM (VALUES (date_start), (GETDATE())) AS Allcosts(cost)
        ),
        date_end
    ) AS TOTALS 
FROM cost_tran_recur

我发现了 VALUES() 对你所做的似乎有点过分了。一 CASE expression以更少的输入和开销完成任务:

SELECT 
    amount_expense * DATEDIFF(
        m,
        CASE WHEN date_start >= GETDATE() THEN date_start else GETDATE() end,
        date_end
    ) AS TOTALS 
FROM cost_tran_recu

相关问题