0

関連する営業日の通貨直物レートを示すデータセットがあり、各通貨の基準日より前の最新の 10 個のデータ ポイントの値を取得したいと考えています。

データは次のようになります。

AsOfDate    Currency    ExchangeRateUSD
9/11/1997   AED -1
9/11/1997   AUD 1.389178
9/11/1997   CAD 1.39125
9/11/1997   CHF 1.4774
9/11/1997   CZK 33.6755
9/11/1997   DKK 6.8203
9/11/1997   HKD 7.7455
9/11/1997   IDR 2943
9/11/1997   JPY 119.77
9/11/1997   KWD -1
9/11/1997   MXN 7.7855
9/11/1997   NOK 7.36715
9/11/1997   NZD 1.579654
9/11/1997   PHP 32.53
9/11/1997   SEK 7.7944
9/11/1997   SGD 1.511
9/11/1997   THB 35.475
9/11/1997   TWD 28.6125
9/11/1997   ZAR 4.698
9/12/1997   AED -1
9/12/1997   AUD 1.386001
9/12/1997   CAD 1.39325
9/12/1997   CHF 1.46475
9/12/1997   CZK 33.449
9/12/1997   DKK 6.7377
9/12/1997   HKD 7.746
9/12/1997   IDR 2933
9/12/1997   JPY 120.815
9/12/1997   KWD -1
9/12/1997   MXN 7.7765
9/12/1997   NOK 7.2844
9/12/1997   NZD 1.575175
9/12/1997   PHP 32.2
9/12/1997   SEK 7.65845
9/12/1997   SGD 1.514
9/12/1997   THB 36.225
9/12/1997   TWD 28.613
9/12/1997   ZAR 4.6865
9/15/1997   AED -1
9/15/1997   AUD 1.387829
9/15/1997   CAD 1.39185
9/15/1997   CHF 1.45175

1999 年 2 月 19 日の基準日を使用して、次のデータを返したいと思います (例は 2 つの通貨のみを示しています。返される実際のデータにはすべての通貨が含まれます)。

    AsOfDate    Currency    ExchangeRateUSD
2/8/1999    EUR 0.888968
2/9/1999    EUR 0.884956
2/10/1999   EUR 0.883275
2/11/1999   EUR 0.885152
2/12/1999   EUR 0.886682
2/15/1999   EUR 0.889957
2/16/1999   EUR 0.894454
2/17/1999   EUR 0.890234
2/18/1999   EUR 0.891107
2/19/1999   EUR 0.901266
2/8/1999    JPY 113.71
2/9/1999    JPY 114.38
2/10/1999   JPY 114.52
2/11/1999   JPY 114.3
2/12/1999   JPY 114.305
2/15/1999   JPY 115.525
2/16/1999   JPY 118.175
2/17/1999   JPY 118.895
2/18/1999   JPY 119.82
2/19/1999   JPY 120.53

1999 年 2 月 25 日の基準日について、次のデータを返したいと思います (ここでも、実際のデータはすべての通貨を示します)。

AsOfDate    Currency    ExchangeRateUSD
2/12/1999   EUR 0.886682
2/15/1999   EUR 0.889957
2/16/1999   EUR 0.894454
2/17/1999   EUR 0.890234
2/18/1999   EUR 0.891107
2/19/1999   EUR 0.901266
2/22/1999   EUR 0.906454
2/23/1999   EUR 0.910705
2/24/1999   EUR 0.91295
2/25/1999   EUR 0.904895
2/12/1999   JPY 114.305
2/15/1999   JPY 115.525
2/16/1999   JPY 118.175
2/17/1999   JPY 118.895
2/18/1999   JPY 119.82
2/19/1999   JPY 120.53
2/22/1999   JPY 120.33
2/23/1999   JPY 121.195
2/24/1999   JPY 121.88
2/25/1999   JPY 120.1

このように、基準日によって開始日から終了日までの日数が異なるため、DATEADD()内で日付DATEPARTを使用することはできません。ただし、化合物 2weeks-1day を使用すると、適切な範囲が得られます。

DATEADD() 内で複合 DATEPART を使用する方法、またはこれを行う別の方法はありますか?

編集 - 重要なポイントを逃しました...複数の基準日を持つ複数の通貨に対して同時にこれを行いたいです。為替レート テーブル (#exchangeRates) を結合する基準日 (#referenceDates) のテーブルがあり、WHERE 句内で BETWEEN を使用して、各基準日に適切な日付を取得したいので、 DATEADD() 内の複合 DATEPART が必要です。

4

3 に答える 3

1

参考日として2/25/1999

SELECT TOP(10) *
  FROM DATA
 WHERE Currency = 'JPY'
   AND AsOfDate <= '19990225'
ORDER BY AsOfDate DESC;

参考までに、実際に 2 週間 - 1 日が必要な場合は、単純な式:

DATEADD(D, +1, DATEADD(WK, -2, '19990225'))

ただし、直接 -13 日を使用する方がよいでしょう。

DATEADD(D, -13, '19990225')

または、クエリで (ただし、データの日数にギャップがある場合、10 個のデータ ポイントは得られません):

SELECT *
  FROM DATA
 WHERE Currency = 'JPY'
   AND AsOfDate <= '19990225'
   AND AsOfDate >= DATEADD(D, -13, '19990225')
ORDER BY AsOfDate ASC;
于 2012-12-06T20:11:57.323 に答える
0

あなたが逃げることができるように見えます:

select top 10 *
from YourTable
where AsOfDate <= @refDate
order by AsOfDate desc
于 2012-12-06T20:10:04.167 に答える
0

クエリ:

SQLFIDDLE例

SELECT
a.*
FROM(
SELECT TOP 10
t1.*
FROM tbl t1
WHERE t1.AsOfDate <='2/25/1999'
ORDER BY t1.AsOfDate DESC
)a
ORDER BY a.AsOfDate ASC

1999 年 2 月 25 日の結果:

|                        ASOFDATE | CURRENCY | EXCHANGERATEUSD |
----------------------------------------------------------------
| February, 12 1999 00:00:00+0000 |      JPY |         114.305 |
| February, 15 1999 00:00:00+0000 |      JPY |         115.525 |
| February, 16 1999 00:00:00+0000 |      JPY |         118.175 |
| February, 17 1999 00:00:00+0000 |      JPY |         118.895 |
| February, 18 1999 00:00:00+0000 |      JPY |          119.82 |
| February, 19 1999 00:00:00+0000 |      JPY |          120.53 |
| February, 22 1999 00:00:00+0000 |      JPY |          120.33 |
| February, 23 1999 00:00:00+0000 |      JPY |         121.195 |
| February, 24 1999 00:00:00+0000 |      JPY |          121.88 |
| February, 25 1999 00:00:00+0000 |      JPY |           120.1 |
于 2012-12-06T20:11:40.633 に答える