2

現在、このクエリを 1 つのシナリオで実行していますが、2 つのシナリオがあります。SYSDATE = Monday の場合は「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
4

1 に答える 1

1

WHERE 条件で CASE ステートメントを使用して、月曜日の場合は 2、残りの週の場合は 1 を引くことができます。TO_CHAR(DATE, '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

また、既に GROUP BY を使用しているため、DISTINCT キーワードは必要ありません。

于 2014-03-06T18:43:04.810 に答える