0

enddate最後のperを選択しようとしていますnr。にwith valuenrが含まれている場合、これはまだアクティブであることを意味します。つまり、必要なときに日付を選択してしまうため、使用できません。enddateNULLnrMAX(enddate)2013-09-25NULLNULL

次のクエリを試してみましたが、NULL IN (enddate)疑わしいものが返されないようです。つまり、「配列に少なくとも1つの値が含まれている場合NULL...」。つまり、NULLをオーバーランクする必要がありMAX()ます。

SELECT nr,
 CASE WHEN NULL IN (enddate) THEN NULL ELSE MAX(enddate) END
 FROM myTable
 GROUP BY nr

誰かがこの表現を置き換える方法を知っていますか?

4

3 に答える 3

0

このクエリを使用できます。CTE は、null を無視して最大日付を計算します。これは、テーブルに結合されたままになり、各 nr 値に null 値があるかどうかが確認されます。case ステートメントは、存在する場合は null を返すか、CTE からの最大日付を返します。

WITH CTE1 AS 
(SELECT nr, MAX(enddate) MaxEnddate
FROM myTable
GROUP BY nr)
  SELECT CTE1.nr,
  CASE WHEN MyTable.enddate IS NULL AND MyTable.NR IS NOT NULL THEN NULL ELSE CTE1.MaxEndDate END AS EndDate
  FROM CTE1
  LEFT JOIN MyTable
  ON MyTable.nr=CTE1.nr
  AND MyTable.enddate IS NULL
于 2013-09-26T12:54:29.780 に答える