我必须检查table1中的日期(我必须添加一个月)是否与table2中的日期相同。这些表是通过(id_ap)连接的,我得到错误"不是表达式的分组"
table1(id_ap,年,月)〜月份和年份是数字
table2(id_ap,data)
SELECT ADD_MONTHS(TO_DATE(TO_CHAR(table1.year, '9999') || TO_CHAR(table1.month, 'FM00') || '01', 'YYYYMMDD'),1)AS "Date table1", table2.data, table2.id_ap
FROM table1 join table2
ON table1.id_ap = table2.id_ap
//Group by table2.data,table1.id_ap -- I tried both with and without group by, but same error
HAVING ADD_MONTHS(TO_DATE(TO_CHAR(table1.year, '9999') || TO_CHAR(table1.month, 'FM00') || '01', 'YYYYMMDD'),1) = table2.data
答案 0 :(得分:1)
也许这就是你想要的:
SELECT table2.data, table2.id_ap
FROM table1 JOIN
table2
ON table1.id_ap = table2.id_ap AND
ADD_MONTHS(TO_DATE(TO_CHAR(table1.year, '9999') || TO_CHAR(table1.month, 'FM00') || '01', 'YYYYMMDD'), 1) = table2.data
GROUP BY table2.data, table1.id_apgroup;
注意:
join
条件应该放在on
子句中。不是having
子句(特别是),通常不在where
子句中。table2.data
。您的join
条件保证它们是相同的。group by
中。但为什么要这么麻烦?您的值为table2
。