【发布时间】:2018-03-20 16:40:06
【问题描述】:
我正在尝试帮助一位同事对两个 oracle 表进行内部联接,以便他可以在报表上构建特定图表。
我没有 Oracle 经验,只有 SQL Server,并且得到了看起来合适的语句,但不起作用。
SELECT concat(concat(month("a.timestamp"),','),day("a.timestamp")) as monthDay
, min("a.data_value") as minTemp
, max("a.data_value") as maxTemp
, "b.forecast" as forecastTemp
, "a.timestamp" as date
FROM table1 a
WHERE "a.category" = 'temperature'
GROUP BY concat(concat(month("timestamp"),','),day("timestamp"))
INNER JOIN (SELECT "forecast"
, "timestamp"
FROM table2
WHERE "category" = 'temperature') b
ON "a.timestamp" = "b.timestamp"
出于某种原因,它不喜欢我的别名。它不喜欢由于某种原因没有引号。
此外,当我使用完整评分的名称时,它仍然失败,因为:
ORA-00933 SQL command not properly ended
【问题讨论】:
-
将组移到末尾
-
还有在哪里
-
样本数据和期望的结果会有所帮助。
-
您已将别名放在双引号内;双引号表示里面的文本应该被认为是区分大小写的标识符。正确的语法应该是:
select a."timestamp" from table1 a;。请注意,如果您(无论出于何种原因)决定使用区分大小写的别名,则需要将其单独引用到任何列,例如select "a"."timestamp" from table1 "a";。如果您对表有任何控制权,请不要使用区分大小写的标识符创建它们;那样就是疯狂! *{;-)
标签: sql oracle inner-join etl