2012-04-02 11 views
0

結合されたテーブルの上にカウントを取得:
*日付、
私は2つのテーブル(オラクル)を持っている

表1の列がある(私は、カラム名の前に星を持つ主キーをマークしています) *コード、
*シンボル、
価格、
重量

表2列は次のとおりです:私は、クエリを使用して、以下の情報を見つける必要がある * descriptionID
コード
シンボル

説明

、与えられたコードおよび特定の日のシンボルの

は、任意の記述があります。例えば、ID =、code = "AA"、symbol = "TEST"、date = 1のような行が少なくとも1つあります。 2012年4月1日には、表2

に私は以下のクエリを使用してみました:

select * from Table1 t1 INNER JOIN 
Table2 t2 
on t1.code = t2.code and t1.symbol = t2.symbol and 
TO_CHAR(t1.date, 'YYYY/MM/DD') = TO_CHAR(t1.date, 'YYYY/MM/DD') 

しかし、それは私のような出力与えるdoesntの:

コード= AA、シンボル= TEST、日付2012から4を-1 =>除数= 10
コード= AA、symbol = TEST、日付2012-4-2 =>除数= 5
cod e = BB、symbol = HELO、date 2012-4-1 => descrition count = 20

上記の出力を得ることができるクエリを私に提案する人がいますか?

+0

回答が得意ですか?あなたの質問には – Tom

+0

があります。なぜTO_CHAR(t1.date、 'YYYY/MM/DD')= TO_CHAR(t1.date、 'YYYY/MM/DD') 'なぜ文字列に変換されますか?それは右(左)側のt2ではないでしょうか?なぜなら、単に 't1.date = t2.date'ではないからです。 –

答えて

1

あなたが参加する必要がある理由私は表示されません。

SELECT count(*) 
FROM Table2 
WHERE code='AA' 
AND symbol = 'TEST' 
AND date = to_date('2012-04-01', 'yyyy-mm-dd') 

UPDATE:あなたが参加する必要がある理由(あなたのコメントを読んだ後)
私はまだ見ていません。 table1のデータが必要ですか?
とにかく、すべての(コード、シンボル、日付)の数をカウントしたいなら、なぜグループ化しないのですか?
日付については、時間部分を取り除くためにtruncを使用することをお勧めします。
だから:

SELECT code, symbol, date, count(*) 
FROM Table2 
GROUP BY code, symbol, date 
+0

私はtable1のすべての項目について説明カウントが必要です。 code = "AA"、symbol = "TEST"だけではありません。これは一例です。だから、私は結合を使うのです。上記の方法でcount(*)を使用すると、AA-TEST-2012-04-01の説明のカウントだけが与えられます。 t1.dateには時間パラメータがあり、t2.dateにはyyyymmddしかないので、t1.date = t2.dateを使うことはできません。私は日付部分だけを比較する必要があります。私はtable1の各ユニークなコードシンボルの日付項目の説明カウントを与える単一のクエリが必要です。 – user1308004

+0

@ user1308004-私は自分の答えを更新しました。次のようなことができるでしょう: 'trunc(t1.date)= trunc(t2.date)' –

0

Trunc()メソッドは文字列\日付の入力を受け取り、このフォーマットであるDATE出力を作成します。 "DD \ MM \のYYYYを"。 それはあなたが望むものを正確に行うべきです。

関連する問題