配置单元查询中的parseexception

rdlzhqv9  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(312)

我正在运行以下配置单元查询(mapr版本0.12):

SELECT A.ID, A.AMT1, A.AMT2
FROM (
  SELECT ID as ID, NET_AMOUNT as AMT1
  FROM TEST_TABLE
  WHERE DATE_BY >='2012-10-01' AND DATE_BY <='2012-10-31') as q
  JOIN (
    SELECT ID as ID, NET_AMOUNT as AMT2
    FROM TEST_TABLE
    WHERE DATE_BY >='2013-10-01' AND DATE_BY <='2013-10-31') as r  
  ON q.ID=r.ID ) A

但我得到了一个错误:
错误:失败:parseexception行2:2无法识别子查询源中“(”select“id”)附近的输入

cbjzeqam

cbjzeqam1#

您需要使用将要比较的日期转换为日期 cast('your date' as date) 因为它当前是一个字符串。
这可能无法解决您的问题,因此请在尝试后编辑您的问题。

lo8azlld

lo8azlld2#

你的提问似乎有问题,我认为应该是这样的:

SELECT q.ID,q.AMT1,q.AMT2 FROM  
(SELECT ID as ID, NET_AMOUNT as AMT1 FROM TEST_TABLE WHERE DATE_BY >='2012-10-01' AND DATE_BY <='2012-10-31')  q 
JOIN (SELECT ID as ID ,NET_AMOUNT as AMT2 FROM TEST_TABLE WHERE DATE_BY >='2013-10-01' AND DATE_BY <='2013-10-31')  r
on (q.ID=r.ID )

但当你比较日期时,正如@antariksha所说的,你需要把它扔出去。但我更喜欢一个更好的选择,以时间戳格式比较日期。因此,在这种情况下,您的查询将如下所示:

SELECT q.ID,q.AMT1,q.AMT2 FROM  
(SELECT ID as ID, NET_AMOUNT as AMT1 FROM TEST_TABLE WHERE unix_timestamp(DATE_BY,"<your date patern>") >=unix_timestamp('2012-10-01',"YYYY-MM-DD") AND unix_timestamp(DATE_BY,"<your date patern>") <=unix_timestamp('2012-10-31',"YYYY-MM-DD"))  q 
JOIN (SELECT ID as ID ,NET_AMOUNT as AMT2 FROM TEST_TABLE WHERE unix_timestamp(DATE_BY,"<your date patern>") >=unix_timestamp('2013-10-01',"YYYY-MM-DD") AND unix_timestamp(DATE_BY,"<your date patern>") <=unix_timestamp('2013-10-31',"YYYY-MM-DD"))  r
on (q.ID=r.ID )

希望对你有帮助。。。!!!

相关问题