我有两张桌子(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
有人可以建议我一个可以达到上述输出的查询。
答案 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”。
所以它应该完全按照你的意愿行事。