Sql 如何在oracle中获取过去的一天
你有一个额外的Sql 如何在oracle中获取过去的一天,sql,oracle11g,Sql,Oracle11g,你有一个额外的select,你缺少一个end,你不能用相等运算符测试null-null永远不等于或不等于任何东西,甚至它本身 这将使您进一步了解: SELECT TRANSACTION_ID, (SELECT CASE WHEN CLOSE_DATE = NULL THEN round(sysdate - created_date) ELSE ROUND(CLOSE_DATE - CREATED_DATE) ) as NODAYS FROM TBL
select
,你缺少一个end
,你不能用相等运算符测试null
-null
永远不等于或不等于任何东西,甚至它本身
这将使您进一步了解:
SELECT
TRANSACTION_ID,
(SELECT CASE WHEN CLOSE_DATE = NULL
THEN
round(sysdate - created_date)
ELSE ROUND(CLOSE_DATE - CREATED_DATE)
) as NODAYS
FROM TBL_TRANSACTION
WHERE CREATED_BY = 101913
您可以使用NVL()
稍微简化一下:
SELECT
TRANSACTION_ID,
CASE
WHEN CLOSE_DATE IS NULL
THEN round(sysdate - created_date)
ELSE ROUND(CLOSE_DATE - CREATED_DATE)
END as NODAYS
FROM TBL_TRANSACTION
WHERE CREATED_BY = 101913
运行此操作时会发生什么情况?您的问题是什么?
NVL
应该在CLOSE\u DATE
上。
SELECT TRANSACTION_ID,
ROUND(NVL(CLOSE_DATE, SYSDATE) - CREATED_DATE) as NODAYS
FROM TBL_TRANSACTION
WHERE CREATED_BY = 101913