我在SQL Server数据库和Excel中有一个表,看起来像 this
使用Excel计算" D"的值在专栏" H"我使用了以下公式:
=IF(G2="NULL",100,IF(A2="NULL",((E2-3-F2)/D2),IF(D2="NULL",((B2-3-C2)/A2),IF(((B2-3-C2)/A2)<((E2-3-F2)/D2),((B2-3-C2)/A2),((E2-3-F2)/D2)))))
公式工作正常,如果我想在公式中将值3更改为3.2并更新Excel中的值,我只需将3更改为3.2,使其看起来像下面的公式:
=IF(G2="NULL",100,IF(A2="NULL",((E2-3.2-F2)/D2),IF(D2="NULL",((B2-3.2-C2)/A2),IF(((B2-3.2-C2)/A2)<((E2-3.2-F2)/D2),((B2-3.2-C2)/A2),((E2-3.2-F2)/D2)))))
但是,我不知道如何将此Excel公式转换为SQL查询,如果有人可以帮助我根据上述公式编写正确的SQL查询语句,我将不胜感激。提前谢谢。
答案 0 :(得分:1)
在SQL SERVER中,您可以使用CASE表达式来计算条件列表,并返回多个可能的结果表达式之一。
SELECT
CASE WHEN G2 IS NULL THEN 100
ELSE
CASE WHEN A2 IS NULL THEN (E2-3.2-F2)/D2
ELSE
CASE WHEN D2 IS NULL THEN (B2-3.2-C2)/A2
ELSE
CASE WHEN (B2-3.2-C2)/A2 < (E2-3.2-F2)/D2 THEN (B2-3.2-C2)/A2
ELSE (E2-3.2-F2)/D2
END
END
END
END AS Test
FROM YourTable