Postgres: отсутствует запись в предложении для table — SQL

#sql #postgresql

#sql #postgresql

Вопрос:

добрый день, у меня есть запрос о том, что я не могу отобразить столбец столбца таблицы (dpa.view_workflowjob_client) (f_name), когда я размещаю (c.f_name), не выбирайте для просмотра ошибку (отсутствует запись из предложения FROM для таблицы). см. Ниже:

 select 
wfjc.f_agent_name,
wfjc.f_policy_name,
wfjc.f_workflow_name,
wfjc.f_workflow_jobid,
wfjc.f_status,
wfjc.f_completion_status,
wfjc.f_completion_report,
wfjc.f_starttime,
wfjc.f_endtime,
wfjc.f_missed_clients,
wfjc.f_disabled_clients,
c.f_name

                        from (
                            select *
                            from dpa.view_workflowjob wfj
                            left join
                            (
                                select                                  
                                    c.f_workflowjob_id,
                                    case when count(c.dis) > 0
                                        then count(c.dis)
                                        else null
                                    end f_disabled_clients,
                                    case when count(c.msd) > 0
                                        then count(c.msd)
                                        else null
                                    end f_missed_clients
                                from
                                (
                                    select
                                        f_name,
                                        f_workflowjob_id,
                                        case when f_status = 'disabled'
                                             then 1
                                             else null
                                        end dis,
                                        case when f_status = 'missed'
                                             then 1
                                             else null
                                        end msd
                                    from dpa.view_workflowjob_client 
                                    where f_starttime <= 1606146420 AND f_endtime >= 1605023220
                                ) c                                                         
                                group by c.f_workflowjob_id
                            ) clients
                            on clients.f_workflowjob_id = wfj.f_id
                        ) wfjc
                        where (
    (wfjc.f_starttime <= 1606146420 AND wfjc.f_endtime >= 1605023220 AND ( (wfjc.f_agent_id = '8512813a-5654-4b18-99cc-0e812076e719') ))
    ) 

 

Комментарии:

1. Мне кажется, вам нужно f_name подтянуться select c.f_workflowjob_id, f_name, ... .

2. когда я ввожу ее в сообщение об ошибке » ОШИБКА: столбец «c.f_name» должен отображаться в предложении GROUP BY или использоваться в агрегатной функции СТРОКА 8: f_name, »

3. Упс, я пропустил GROUP BY . Простым решением было бы добавить c.f_name в GROUP BY . Это сработало бы только в том случае, если c.f_name бы имело отношение один к одному c.f_workflowjob_id , иначе ваша группировка была бы отключена. Если нет однозначного, я не уверен, как поступить, поскольку группировка c.f_workflowjob_id потеряет c.f_name различия.