2016-09-12 9 views
1

私のデータベースには、日付に基づいて会計年度、期間などを提供するカレンダーテーブルがあります(SQLAssistantでTeradataを使用)。昨年のデータをSQLクエリで取得しようとしていますが、where句に-1を追加するだけで簡単だと思っていましたが、うまくいきません。会計年度が変更されたときにクエリを更新することを忘れないように、日付を厳密にコーディングする必要はありません。カレンダーテーブルSQLで昨年の会計年度データを検索するSQL

動作し、すべての会計年度の売上データを持ち帰る簡体問い合わせは:

Select s.sales, c.fiscalPeriod, c.fiscalYear 
from sales s 
join calendar c 
on s.salesDate = c.calDate 

私が試したが、それは何のデータを戻すんだもの:

Select s.sales, c.fiscalPeriod, c.fiscalYear 
from sales s 
join calendar c 
on s.salesDate = c.calDate 
where c.fiscalYear=c.fiscalYear-1 

そして、この:

Select s.sales, c.fiscalPeriod, c.fiscalYear, c.fiscalYear-1 AS lastYear 
from sales s 
join calendar c 
on s.salesDate = c.calDate 
where c.fiscalYear=lastYear 

おそらく明らかですが、私はかなり新しいSQLです。どんな助けでも大歓迎です。

+0

私はTeradataを知りませんが、必要なものは現在の日付を返す関数です。列自体を比較することは意味をなさない。 – shawnt00

+0

私たちの会計年度は暦年(3月-2月)に基づいていないので、現在の日付を引いて会計年度として設定するために1年を引くと、正確な部分ではありません。または、現在の日付を別の方法で使用することを提案しましたか? – smms

+0

それでも現在の日付が必要です。それを使って今月を取得し、会計年度を決定します。例: 'year(現在の日付) - 1から9の間の月(現在の日付)、次に1 else else end' – shawnt00

答えて

0

最後の会計年度のデータを取得する場合は、fiscalyearをwhere句の定数として設定するのが最善の方法です。例えば

to_char(fiscalYear,'yyyy')='2015' 

多くの日付変更の函数、それらの検索は、彼らが便利です、あります。

+0

1年をハードコードしたくないので、後で更新する必要はありませんでした。私はそれを反映するために私の最初の質問を更新します。ありがとうございました – smms

0

あなたの会計年度は、今日から2ヶ月行進減算で開始し、その年の月の第一発見するTRUNCを使用する場合:

trunc(add_months(calendar_date,-2), 'y') 

をそしてadd_monthsを適用します。

Select s.sales, c.fiscalPeriod, c.fiscalYear 
from sales s 
join calendar c 
on s.salesDate = c.calDate 
where c.calDate between add_months(trunc(add_months(current_date,-2), 'y'), -10) 
        and add_months(trunc(add_months(current_date,-2), 'y'), 2)-1 
0

私は私を願っていますあなたの質問を誤解していないが、カレンダーテーブルが現在の日付まで満たされている場合は、このクエリを使用することができます。

Select s.sales, c_lastyear.fiscalPeriod, c_lastyear.fiscalYear 
    from sales s 
     join calendar c_lastyear 
      on s.salesDate = c_lastyear.calDate 
     join calendar c 
      on c_lastyear.fiscalYear=c.fiscalYear-1 
    where c.calDate= current_date 

手順は次のとおりです。

  1. は 現在の日付(別名C)でカレンダーのテーブルにアクセスすることにより、当連結会計年度見つける

  2. のすべての日付を取得前年度(別名 c_lastyear

  3. (パフォーマンスは他の提案として良いではありませんが、このクエリは上の仮定をしない、前連結会計年度のすべての販売(別名

を取得

関連する問題