AND语句中的SQL子查询

AND语句中的SQL子查询,sql,subquery,Sql,Subquery,有几个问题 已解决来自\u tsp的有效\u maxvalid\u来自\u tsp-如何根据不是最长日期的情况让查询进行筛选?这种想法行不通返回的错误是:在WHERE子句中不当使用聚合函数 我的第二个问题是,当我在没有日期的情况下运行它时,返回一个语法错误:语法错误,应该是'IN'关键字或'CONTAINS'关键字介于和之间 有什么我看不到的?提前谢谢 编辑查询 故障部分:并选择*from p\U FAR\U SBXD.T\U CLAIM\U SERVICE\U type\U DIM,其中SER

有几个问题

已解决来自\u tsp的有效\u maxvalid\u来自\u tsp-如何根据不是最长日期的情况让查询进行筛选?这种想法行不通返回的错误是:在WHERE子句中不当使用聚合函数

我的第二个问题是,当我在没有日期的情况下运行它时,返回一个语法错误:语法错误,应该是'IN'关键字或'CONTAINS'关键字介于和之间

有什么我看不到的?提前谢谢

编辑查询

故障部分:并选择*from p\U FAR\U SBXD.T\U CLAIM\U SERVICE\U type\U DIM,其中SERVICE\U type\U id=136548255 以及自2014年3月14日起生效的tsp中的CASTU

我试图通过服务类型id上的日期进行筛选,我得到了问题2中的错误

至于示例数据:这有点棘手,这个查询返回数千行数据。当前,当我进行内部联接时,会出现第二个唯一索引冲突错误。因此,我试图过滤掉所有内容,但最新的可能位于违规服务类型id下的内容是次要索引


如果我带回三行服务类型id和三个不同的有效时间戳,我只想保留最新的一行,在查询中,不返回另外两行。

我不知道你的第二个问题,但你的第一个错误是因为在where子句中使用了聚合函数max。我不确定您想在这里做什么,但一个快速解决方案是用只返回最大值的子查询替换来自\u tsp的maxvalid\u。

这是您的查询:

select a.*,  b.coverage_typ_cde as stg_ctc 
from P_FAR_BI_VW.V_CLAIM_SERVICE_TYP_DIM a inner join
     (select distinct etl_partition_id, coverage_typ_cde
      from P_FAR_STG_VW.V_CLAIM_60_POLICY_STG
      where row_Create_tsp > '2013-11-30 23:23:59'
     ) b 
     on (a.etl_partition_id = b.etl_partition_id)
where a.valid_from_tsp > '2013-11-30 23:23:59' and
      a.coverage_typ_cde = ' ' and
      (select *
       from P_FAR_SBXD.T_CLAIM_SERVICE_TYP_DIM
       where service_type_id = 136548255 and
             CAST(valid_from_tsp AS DATE) <> '2014-03-14'
      );

也许您应该发布示例数据和期望的结果。一个不工作的查询并不总是对需要解决的问题公平。我仔细看了一下,发现我没有条件。谢谢你的修复!
select a.*,  b.coverage_typ_cde as stg_ctc 
from P_FAR_BI_VW.V_CLAIM_SERVICE_TYP_DIM a inner join
     (select distinct etl_partition_id, coverage_typ_cde
      from P_FAR_STG_VW.V_CLAIM_60_POLICY_STG
      where row_Create_tsp > '2013-11-30 23:23:59'
     ) b 
     on (a.etl_partition_id = b.etl_partition_id)
where a.valid_from_tsp > '2013-11-30 23:23:59' and
      a.coverage_typ_cde = ' ' and
      (select *
       from P_FAR_SBXD.T_CLAIM_SERVICE_TYP_DIM
       where service_type_id = 136548255 and
             CAST(valid_from_tsp AS DATE) <> '2014-03-14'
      );
where a.valid_from_tsp > '2013-11-30 23:23:59' and
      a.coverage_typ_cde = ' ' and
      exists (select 1
              from P_FAR_SBXD.T_CLAIM_SERVICE_TYP_DIM
              where service_type_id = 136548255 and
                    CAST(valid_from_tsp AS DATE) <> '2014-03-14'
             );