繁体   English   中英

在PostgreSQL中缺少表的FROM子句条目

[英]missing FROM-clause entry for table in postgresql

我在运行此查询时收到此错误。请帮助我理解该错误。但是当我使用count(*)时我没有收到此错误。我修改了查询,它可以正常工作但我无法正确获取计数

select dt.name,dt.asset4_code,dt.org_id,dt.year_max,dt.oa_perm_id,
        count(CASE WHEN date_part('year', dt.time_stamp) = 2002 THEN 1 end) AS Year2002,
        count(CASE WHEN date_part('year', dt.time_stamp) = 2003 THEN 1 end) AS Year2003,
                count(CASE WHEN date_part('year', dt.time_stamp) = 2004 THEN 1 end) AS Year2004,
                count(CASE WHEN date_part('year', dt.time_stamp) = 2005 THEN 1 end) AS Year2005,
                count(CASE WHEN date_part('year', dt.time_stamp) = 2006 THEN 1 end) AS Year2006,
                count(CASE WHEN date_part('year', dt.time_stamp) = 2007 THEN 1 end) AS Year2007,
                count(CASE WHEN date_part('year', dt.time_stamp) = 2008 THEN 1 end) AS Year2008,
                count(CASE WHEN date_part('year', dt.time_stamp) = 2009 THEN 1 end) AS Year2009,
                count(CASE WHEN date_part('year', dt.time_stamp) = 2010 THEN 1 end) AS Year2010,
                count(CASE WHEN date_part('year', dt.time_stamp) = 2011 THEN 1 end) AS Year2011, 
                count(CASE WHEN date_part('year', dt.time_stamp) = 2012 THEN 1 end) AS Year2012,
                count(CASE WHEN date_part('year', dt.time_stamp) = 2013 THEN 1 end) AS Year2013,
                count(CASE WHEN date_part('year', dt.time_stamp) = 2014 THEN 1 end) AS Year2014,
                count(CASE WHEN date_part('year', dt.time_stamp) = 2015 THEN 1 end) AS Year2015 ,
                count(CASE WHEN date_part('year', dt.time_stamp) = 2016 THEN 1 end) AS Year2016

from
 (
    select companies.name,companies.asset4_code,companies.org_id,companies.year_max,companies.oa_perm_id,value_scopes.time_stamp,row_number(*)
    over (partition by sdp.dp_code order by sdp.dp_code desc ) as rn
     FROM 
                companies companies INNER JOIN value_scopes value_scopes ON value_scopes.company_id = companies.company_id
                JOIN dp_values dp ON value_scopes.value_scope_id=dp.value_scope_id
                JOIN dp_content_definition cd ON dp.dp_content_definition_id=cd.dp_content_definition_id 
                JOIN dp_definition def ON def.dp_definition_id=cd.dp_definition_id 
                right outer join strategic_data_point sdp on def.dp_code=sdp.dp_code 
                where 
        date_part('year', value_scopes.time_stamp)='2012'
                 and value_scopes.is_partial='f'
                and dp.no_answer='f'
                and (dp.dp_value_s IS  not  NULL or dp.dp_value_n IS  not  NULL)
                and companies.asset4_code='35'
                and def.dp_code like '%En%'

 ) dt 
where rn < 2  group by dt.name,dt.asset4_code,dt.org_id,dt.year_max,dt.oa_perm_id order by dt.name;

我认为您使用了错误的别名。

尝试更换value_scopes.time_stamp通过dt.time_stampCOUNT ,2号线。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM