sql查询出现一些错误

sql查询出现一些错误,sql,plsql,Sql,Plsql,我有一个sql查询,它给出的soem错误是“Group”没有正确使用。 我正在使用一个sql包装器与db2表进行交互 有人能告诉我怎么回事吗?我不能用PIVOT,所以尝试了这个 with CTE as ( select distinct(P.Hfan_id )as HFAN_ID, Min(Case P.HFA_PARAM_NV When 'BUSI_WANT_CALL' Then P.HFAN_PARAM_TXT End) as BUSI_WANT_CALL, Min(Case P.HFA_P

我有一个sql查询,它给出的soem错误是“Group”没有正确使用。 我正在使用一个sql包装器与db2表进行交互

有人能告诉我怎么回事吗?我不能用PIVOT,所以尝试了这个

with CTE as
(
select distinct(P.Hfan_id )as HFAN_ID,
Min(Case P.HFA_PARAM_NV When 'BUSI_WANT_CALL' Then P.HFAN_PARAM_TXT End) as BUSI_WANT_CALL,
Min(Case P.HFA_PARAM_NV When 'HFAN_CHILDREN1_DT' Then P.HFAN_PARAM_TXT End) as HFAN_CHILDREN1_DT,
Min(Case P.HFA_PARAM_NV When 'HFAN_CHILDREN2_DT'Then P.HFAN_PARAM_TXT End) as HFAN_CHILDREN2_DT,
Min(Case P.HFA_PARAM_NV When 'HFAN_CHILDREN3_DT'Then P.HFAN_PARAM_TXT End) as HFAN_CHILDREN3_DT,
Min(Case P.HFA_PARAM_NV When 'HFAN_CHILDREN4_DT'Then P.HFAN_PARAM_TXT End) as HFAN_CHILDREN4_DT,
Min(Case P.HFA_PARAM_NV When 'HFAN_CHILDREN5_DT'Then P.HFAN_PARAM_TXT End) as HFAN_CHILDREN5_DT,
Min(Case P.HFA_PARAM_NV When 'HFAN_CHILD1_RESPONS' Then P.HFAN_PARAM_TXT End) as HFAN_CHILD1_RESPONS,
Min(Case P.HFA_PARAM_NV When 'HFAN_CHILD2_RESPONS' Then P.HFAN_PARAM_TXT End) as HFAN_CHILD2_RESPONS,
Min(Case P.HFA_PARAM_NV When 'HFAN_CHILD3_RESPONS' Then P.HFAN_PARAM_TXT End) as HFAN_CHILD3_RESPONS,

Min(Case P.HFA_PARAM_NV When 'HFAN_CHILD4_RESPONS' Then P.HFAN_PARAM_TXT End) as HFAN_CHILD4_RESPONS,
Min(Case P.HFA_PARAM_NV When 'HFAN_CHILD5_RESPONS' Then P.HFAN_PARAM_TXT End) as HFAN_CHILD5_RESPONS,

Min(Case P.HFA_PARAM_NV When 'CODEPT_SPOUSE_MK' Then P.HFAN_PARAM_TXT End) as CODEPT_SPOUSE_MK,
Min(Case P.HFA_PARAM_NV When 'HL_SUMMERHOUSE_MK' Then P.HFAN_PARAM_TXT End) as HL_SUMMERHOUSE_MK, 
Min(Case P.HFA_PARAM_NV When 'HL_STUDENT_LOAN' Then P.HFAN_PARAM_TXT End) as HL_STUDENT_LOAN ,
Min(Case P.HFA_PARAM_NV When 'HL_OTHER_LOAN' Then P.HFAN_PARAM_TXT End) as HL_OTHER_LOAN ,
Min(Case P.HFA_PARAM_NV When 'SHFAN_CPR_ID' Then P.HFAN_PARAM_TXT End) as SHFAN_CPR_ID ,
Min(Case P.HFA_PARAM_NV When 'SHL_STUDENT_LOAN' Then P.HFAN_PARAM_TXT End) as SHL_STUDENT_LOAN,
Min(Case P.HFA_PARAM_NV When 'SHL_OTHER_LOAN' Then P.HFAN_PARAM_TXT End) as SHL_OTHER_LOAN, 
Min(Case P.HFA_PARAM_NV When 'HL_LOANTYPE' Then P.HFAN_PARAM_TXT End) as HL_LOANTYPE,
Min(Case P.HFA_PARAM_NV When 'HL_LOAN_AMOUNT' Then P.HFAN_PARAM_TXT End) as HL_LOAN_AMOUNT,
Min(Case P.HFA_PARAM_NV When 'HL_PROPERTY_TYPE' Then P.HFAN_PARAM_TXT End) as HL_PROPERTY_TYPE


Group by P.hfan_id, P.HFAN_PARAM_TXT, P.HFA_PARAM_NV
having
P.hfan_id in
(14835145,
14697134,
14697430,
14694884,
14694999,
14693122,
14693074)
)

Select * from P1,

S.HFAS_EMAIL, 
S.HFAS_PRIV_MOB_NR,
Q.HFAS_ÆGTESTIL_TP, 
R.HFAN_BØRN_HJEM_AN, 
R.HFAN_TO_LÅNTAG_MK

from CTE P1 
inner join hf.HF_ANSØGER_S Q
on P1.hfan_id = Q.hfan_id 
inner join hf.HF_ANSØGNING_S R
on P1.hfan_id = R.hfan_id
inner join hf.HF_ANSØGER1_S S
on P1.hfan_id=S.hfan_id
错误-未正确使用“组”。

您有

select distinct(P.Hfan_id )as HFAN_ID,
...
(THERE SHOULD BE A FROM STATEMENT HERE)
group by P.hfan_id, P.HFAN_PARAM_TXT, P.HFA_PARAM_NV
你需要有一个介于这两者之间的距离。试试看它是否有用。

你有

select distinct(P.Hfan_id )as HFAN_ID,
...
(THERE SHOULD BE A FROM STATEMENT HERE)
group by P.hfan_id, P.HFAN_PARAM_TXT, P.HFA_PARAM_NV

你需要有一个介于这两者之间的距离。试试看是否有帮助。

您不能将distinct与GROUP BY一起使用。。。正如其他人所说,“FROM is missing”

您不能将distinct与GROUP BY一起使用。。。正如其他人所说,FROM缺少

正如我在评论中提到的,您缺少了CTE中的
FROM
子句。此外,您应该在
where
子句中进行筛选,而不是在
having
中进行筛选。而且,
groupby
看起来并不是write(提示:
selectdistinct
在聚合查询中几乎不需要)

所以,我认为应该是这样的:

with CTE as (
      select P.Hfan_id,
             . . .
      from p
      where P.hfan_id in (14835145, 14697134, 14697430, 14694884, 14694999, 14693122, 14693074)
      Group by P.hfan_id
     )

正如我在评论中提到的,您缺少CTE中的
from
子句。此外,您应该在
where
子句中进行筛选,而不是在
having
中进行筛选。而且,
groupby
看起来并不是write(提示:
selectdistinct
在聚合查询中几乎不需要)

所以,我认为应该是这样的:

with CTE as (
      select P.Hfan_id,
             . . .
      from p
      where P.hfan_id in (14835145, 14697134, 14697430, 14694884, 14694999, 14693122, 14693074)
      Group by P.hfan_id
     )

必须在SELECT语句中包含“分组依据”的列。您需要将P.HFAN_PARAM_TXT作为单独的列添加到Select语句中

您必须在Select语句中包含“分组依据”的列。您需要将P.HFAN_PARAM_TXT作为一个单独的列添加到Select语句中

谢谢大家的回答。有效的解决方案(以防万一):


谢谢大家的回答。有效的解决方案(以防万一):


CTE中没有
from
子句。除了缺少
from
,您还使用
distinct
groupby
。这没有什么意义;删除
distinct
并选择
分组依据中的属性。CTE中没有
from
子句。除了缺少
from
,您还使用
distinct
分组依据
。这没有什么意义;删除
不同的
,然后选择
分组中的属性。当然,您可以使用
select distinct
groupby
。这几乎是不需要的。(挑战:思考一个问题,在聚合查询中选择distinct
是合适的;)。你是对的(通常是这样):)我从未将distinct与group by一起使用过,但正如你所说,这是可能的。例如,按aa,bb;从表组中选择不同的aa,count(*)。当然,您可以使用
select distinct
groupby
。这几乎是不需要的。(挑战:思考一个问题,在聚合查询中选择distinct
是合适的;)。你是对的(通常是这样):)我从未将distinct与group by一起使用过,但正如你所说,这是可能的。例:按aa、bb从表组中选择不同的aa、count(*);我使用了我粘贴的代码。from错误已解决,但我仍获得一些重复数据。有指针吗?我使用了我粘贴的代码。from错误已解决,但我仍获得一些重复数据。有指针吗?