依靠联合表格

时间:2012-04-02 12:29:32

标签: oracle11g

我有两张桌子(oracle): (我在列名称之前用星号标记了主键)

表1 列是:
    *日期,
    *代码,
    *符号,
    价格,
    重量

表2 列是:
    * descriptionID
    代码
    符号
    日期
    描述

我需要使用查询

找到以下信息

对于特定日期的给定代码和符号,是否有任何描述 例如:表1中的2012-4-1中的code =“AA”和symbol =“TEST”=>至少有一行如ID =,code =“AA”,symbol =“TEST”,date = 2012-4-1 in table 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')

但它并没有给我输出如下:

代码= AA,符号= TEST,日期2012-4-1 => descrition count = 10
code = AA,symbol = TEST,date 2012-4-2 => descrition count = 5
code = BB,symbol = HELO,date 2012-4-1 => descrition count = 20

有人可以建议我一个可以达到上述输出的查询。

2 个答案:

答案 0 :(得分:1)

我不明白为什么你需要加入:

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

更新(阅读评论后)
我仍然不明白为什么你需要加入。你需要table1的一些数据吗?
无论如何,如果你想要所有(代码,符号,日期)的计数,那么为什么不分组?
至于日期,最好使用trunc来摆脱时间部分 所以:

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

答案 1 :(得分:0)

Trunc()方法接受String \ Date输入并创建一个DATE输出,格式为:“DD \ MM \ YYYY”。 所以它应该完全按照你的意愿行事。