从两个表oracle中检索具有不同字段名称和类型的不同值

时间:2017-05-09 06:46:16

标签: sql oracle distinct

  • table1:id,year,month,...
  • table2:id,date,...

我要做的是从特定年份(例如:2017年)的两个表格中检索月份的不同值以及特定ID(请注意,table1将年份和月份作为单独的字段,而table2将完整日期作为单个字段

我写了这个查询:

SELECT DISTINCT month 
  FROM table1
  JOIN table2 
    ON table1.month = table2.(to_char(date,'mm'))
 WHERE table1.year=2017
   AND id=406;

我收到此错误:

 ORA-01747: invalid user.table.column, table.column, or column specification
01747. 00000 -  "invalid user.table.column, table.column, or column specification"

对于场景,table1包含一个pay元素,table2包含另一个pay元素,一个员工可以在同一个月同时拥有一个条目,或者在其中一个表中有一个唯一条目另一个月,问题是我需要计算12个月支付的月数(我不希望重复同一个月)

2 个答案:

答案 0 :(得分:2)

Alias将进入函数调用。

你可能想要:

mFirebaseInstance.getReference("users").addValueEventListener(new 
ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
              for(DataSnapshot dst : dataSnapshot.getChildren()){
               //Key stores KjfLmUnPUaWeYDETp04 and PlamHmUnPUaWeYDETp04
                String key = dst.getKey();

              }
            }

            @Override
            public void onCancelled(DatabaseError error) {

            }
        });

此外,使用简短有意义的别名来提高可读性。

答案 1 :(得分:1)

尝试以下查询。请注意,按日期加入两个表应该要比较两者年份和月份。

select distinct t1.month
from table1 t1
inner join table2 t2
    on t1.month = to_char(t2.date, 'mm') and
       t1.year = to_char(t2.date, 'yyyy')
where t1.year = 2017 and
      id = 406;

您应该更改表格设计,而不是将日期,月份和年份存储在单独的列中。