Oracle11g 获取联接表的计数
我有两个表(oracle): (我已在列名前用星号标记主键) 表1列为:Oracle11g 获取联接表的计数,oracle11g,Oracle11g,我有两个表(oracle): (我已在列名前用星号标记主键) 表1列为: *日期, *代码, *符号, 价格, 重量 表2列为: *descriptionID 代码 符号 日期 描述 我需要通过查询找到以下信息 对于特定日期的给定代码和符号,是否有任何描述。 例如:表1中的2012-4-1上的code=“AA”和symbol=“TEST”=>表2中是否至少有一行像ID=、code=“AA”、symbol=“TEST”、date=2012-4-1 我尝试了以下查询: select * from T
*日期,
*代码,
*符号,
价格,
重量 表2列为:
*descriptionID
代码
符号
日期
描述 我需要通过查询找到以下信息 对于特定日期的给定代码和符号,是否有任何描述。
例如:表1中的2012-4-1上的code=“AA”和symbol=“TEST”=>表2中是否至少有一行像ID=、code=“AA”、symbol=“TEST”、date=2012-4-1 我尝试了以下查询:
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,符号=测试,日期2012-4-1=>描述计数=10代码=AA,符号=测试,日期2012-4-2=>描述计数=5
代码=BB,符号=HELO,日期2012-4-1=>描述计数=20
有人能给我建议一个可以实现上述输出的查询。我不明白您为什么需要加入:
SELECT count(*)
FROM Table2
WHERE code='AA'
AND symbol = 'TEST'
AND date = to_date('2012-04-01', 'yyyy-mm-dd')
更新:(阅读您的评论后)
我还是不明白你为什么需要加入。您需要表1中的一些数据吗?
无论如何,如果您想要所有(代码、符号、日期)的计数,为什么不按分组?
至于日期,最好使用
trunc
来去除时间部分。因此:
Trunc()
方法接受一个字符串\Date输入并创建一个如下格式的日期输出:“DD\MM\YYYY”。
所以它应该完全符合您的要求。您准备好回答了吗?在您的查询中,您有
TO_CHAR(t1.date,'YYYY/MM/DD')=TO_CHAR(t1.date,'YYYY/MM/DD')
为什么要转换为字符串?右边(左边)不是应该是t2吗?我的意思是,为什么不干脆t1.date=t2.date
我需要表1中所有项目的描述计数。不仅仅针对code=“AA”、symbol=“TEST”。这就是jst的一个例子。这就是我使用join的原因。以上述方式使用计数(*),仅给出AA-TEST-2012-04-01的描述计数。我不能只使用t1.date=t2.date,因为t1.date有时间参数,t2.date只有yyyyymmdd。我只需要比较日期部分。我需要一个查询,它将给出表1中每个唯一代码符号日期项的描述计数。@user1308004-我更新了我的答案,至于可以这样做的日期:trunc(t1.date)=trunc(t2.date)
SELECT code, symbol, date, count(*)
FROM Table2
GROUP BY code, symbol, date