我目前正在为一个场景运行这个查询,但我有两个场景:如果SYSDATE = have,那么运行“SYSDATE-2”,否则运行“SYSDATE-1”。我通过Excel的OLE连接连接到数据库,所以我不确定是否可以使用存储过程。是否有一种方法可以编写查询以完成这两种情况?谢谢你的帮助。
SELECT
DISTINCT VERSION_NAME VERSION, MIN(RECONCILE_START_DT) DATES
FROM
SDE.GDBM_RECONCILE_HISTORY
WHERE
RECONCILE_RESULT = 'Conflicts'
AND
RECONCILE_START_DT > SYSDATE -1
GROUP BY VERSION_NAME
ORDER BY 2 ASC NULLS LAST发布于 2014-03-06 18:43:04
您可以在WHERE条件下使用CASE语句减去星期一2次或一周剩余时间1次。TO_CHAR(日期,'D')从周日= 1开始交付一周中的一天,因此星期一是2。
试试这个:
SELECT
VERSION_NAME AS VERSION,
MIN(RECONCILE_START_DT) AS DATES
FROM
SDE.GDBM_RECONCILE_HISTORY
WHERE
RECONCILE_RESULT = 'Conflicts'
AND
RECONCILE_START_DT > SYSDATE -
CASE TO_CHAR(SYSDATE, 'D')
WHEN '2' THEN 2
ELSE 1 END
GROUP BY VERSION_NAME
ORDER BY 2 ASC NULLS LAST而且,您不需要使用DISTINCT关键字,因为您已经在使用GROUP。
https://stackoverflow.com/questions/22230473
复制相似问题