以下SQL查询不工作,它将返回错误:
42601错误:子查询必须只返回一个列位置: 50
我需要为一个活的项目修复它,并且在这个项目上有困难。
SELECT CASE WHEN habilitation.actif IS TRUE THEN (SELECT vue_cdc_for_opera.libelle,
dt_bdd_produit.libelle_dt,
vue_cdc_for_opera.classe_ue,
vue_cdc_for_opera.code_cdc,
COALESCE(vue_cdc_for_opera.signe_ue, vue_cdc_for_opera.signe_fr),
COUNT(CASE WHEN cdc_postgresql.id = habilitation.id_cdc_postgresql THEN 1 ELSE 0 END) as operateurs
)
ELSE (SELECT vue_cdc_for_opera.libelle,
dt_bdd_produit.libelle_dt,
vue_cdc_for_opera.classe_ue,
vue_cdc_for_opera.code_cdc,
COALESCE(vue_cdc_for_opera.signe_ue, vue_cdc_for_opera.signe_fr))
END
FROM vue_cdc_for_opera, cdc_postgresql, dt_bdd_produit, operateur, habilitation;
任何帮助都是非常感谢的。
发布于 2020-02-12 15:45:55
很不清楚你想做什么,但在这里我能帮你做的是:
在这个例子中,如果habilitation.actif
是真,那么您将选择count of.如果不是,那么您将为该行选择值0
。请注意,在使用聚合函数时,必须使用组。另外,您还需要以某种方式将此表从from
子句连接到.要想得到更多的帮助,在你的问题中加入更多的细节,数据也.
SELECT vue_cdc_for_opera.libelle,
dt_bdd_produit.libelle_dt,
vue_cdc_for_opera.classe_ue,
vue_cdc_for_opera.code_cdc,
COALESCE(vue_cdc_for_opera.signe_ue, vue_cdc_for_opera.signe_fr),
CASE WHEN habilitation.actif IS TRUE THEN
COUNT(CASE WHEN cdc_postgresql.id = habilitation.id_cdc_postgresql THEN 1 ELSE 0 END)
else 0
END a
FROM vue_cdc_for_opera, cdc_postgresql, dt_bdd_produit, operateur, habilitation
group by vue_cdc_for_opera.libelle,
dt_bdd_produit.libelle_dt,
vue_cdc_for_opera.classe_ue,
vue_cdc_for_opera.code_cdc,
vue_cdc_for_opera.signe_ue,
vue_cdc_for_opera.signe_fr,
habilitation.actif
https://stackoverflow.com/questions/60191613
复制相似问题