sql查询出现一些错误
我有一个sql查询,它给出的soem错误是“Group”没有正确使用。 我正在使用一个sql包装器与db2表进行交互 有人能告诉我怎么回事吗?我不能用PIVOT,所以尝试了这个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
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错误已解决,但我仍获得一些重复数据。有指针吗?