0

TaxRates というテーブルがあります。EndDateタイプ のという計算列を作成したいと考えていますDATETIMEOFFSET NULL

EndDate は、次のレコードの StartDate 列の値を時系列で返す必要があります。一致するものがない場合は、null を返す必要があります。

計算列の経験はあまりありません。これは私がやろうとしていることです:

SELECT TOP 1 StartDate FROM TaxRates tr
WHERE tr.StartDate > StartDate
ORDER BY StartDate ASC

これにより、検証エラーが発生します。

私はここで何をすべきですか?

4

2 に答える 2

1

以下を試して、探している結果が得られるかどうかを確認してください。

もしそうなら、これを VIEW にすることを検討できます。

; WITH sorted_taxrates AS (
  SELECT taxbandcode
       , startdate
       , Row_Number() OVER (PARTITION BY taxbandcode ORDER BY startdate ASC) As row_num
  FROM   taxrates
)
SELECT t1.taxbandcode
     , t1.startdate
     , t2.startdate As enddate
FROM   sorted_taxrates As t1
 LEFT
  JOIN sorted_taxrates As t2
    ON t1.taxbandcode = t2.taxbandcode
   AND t2.row_num = t1.row_num + 1
于 2013-11-14T15:19:37.260 に答える