2016-03-23 9 views
1
SELECT 
EXTRACT(YEAR from saledate)||EXTRACT(MONTH from saledate) AS YEAR_MONTH, 
FROM trnsact 
WHERE YEAR_MONTH <> '2005 8' 
  1. は、上記の私の質問に関連している私のサンプルコードは、それがTeradataので実行されています。年月文字列を自分のデータから除外するにはどうすればいいですか?

  2. だから、私は「||」記号は日付の年と月に参加することができます私のオンラインコースからいくつかのヒントを持っています。

  3. どのように私は分かりませんこの年 - 月のペアの文字列の特定の値。コードのように、私は自分のデータから2005-08を除外したいと思います。

  4. 私は、以下に列挙する注文とスタイリングの異なるバージョンを試しました。何も働かなかった。
  5. 私もNOT IN関数を使用しようとしましたが、これも機能しませんでした。
  6. 私が知っていることは、このシンボルができることであり、その名前に関する情報がないため、私の問題を検索する方法がわかりません。
  7. またこの結果||関数出力は "2005 08"のようなスタイリングのものです。

答えて

1

このお試しください:EXTRACT(saledateからMONTH)はMまたはMMとしてデータを返しますが、それは動作しない場合8にcomparsionを切り替える代わりの場合、私は知らない

SELECT EXTRACT(YEAR from saledate) || EXTRACT(MONTH from saledate) AS YEAR_MONTH 
FROM trnsact 
WHERE EXTRACT(YEAR from saledate) <> 2005 AND 
     EXTRACT(MONTH from saledate) <> 08 

をあなたが先行ブランクと右揃えの数字とVARCHAR(11)への自動型キャストがありますCONCAT場合08

+0

'EXTRACT'は数値を返します。引用符は必要ありません。 – dnoeth

+0

@dnoethあなたは正しいですが、問題はありませんが修正されました。 – sagi

+0

1.サギ私は、あなたが意味するものを以下に示します: ここではない(エキストラクト(saledateからの年)= 2005と エキストラクト(saledateからの月)= 08) あなたが実際に与えたコードは、 2005年1月と2004年8月のような値を含み、それは私が意図していない値です。 2.私はいくつかの年月のペアを除外したいと思います。その場合、@dnoethの両方のメソッドに複数行のコードが含まれていて読みにくいことがあります。 3.私たちはより良い解決策を持っていますか? –

0

EXTRACTのresutlingデータ型は、INTEGERです:

'  2016   3' 

しかし、2 EXTRACTまたはより良いのいずれかで、CONCATを使用する必要はありません。

WHERE saledate NOT BETWEEN DATE '2016-03-01' AND DATE '2016-03-31' 

は今、何の計算は全くありませんし、検索条件は、あまりにも、インデックスまたはパーティションを使用することがあります。

関連する問題