我有这个脚本,我习惯于为动态结果做一个简单的投影
SELECT
M.nom_utilisateur,
SUM(M.montant_bulletin ) as Montant_Total_BS,
SUM(M.montant_payer ) as Montant_Total_payer,
COUNT(M.ref_bs ) as nbr_bs_total,
(SELECT COUNT(*) FROM mutuelle_bi.`Mutuelle` WHERE nom_utilisateur = M.nom_utilisateur AND (M.nom_assurence = "Star" AND M.etat_bs = "Remboursé")) as nbr_bs_total_payer,
(SELECT COUNT(*) FROM mutuelle_bi.`Mutuelle` WHERE nom_utilisateur = M.nom_utilisateur AND (M.nom_assurence = "Star" AND M.etat_bs = "Non remboursé")) as nbr_bs_non_payer,
(SELECT COUNT(*) FROM mutuelle_bi.`Mutuelle` WHERE nom_utilisateur = M.nom_utilisateur AND (M.nom_assurence = "Star" AND M.etat_bs = "En cours")) as nbr_bs_en_cours,
(SELECT COUNT(*) FROM mutuelle_bi.`Mutuelle` WHERE nom_utilisateur = M.nom_utilisateur AND (M.nom_assurence = "Star" AND M.etat_bs = "Nouveau")) as nbr_bs_nouveau
FROM mutuelle_bi.`Mutuelle` M
WHERE M.nom_assurence = "Star"
GROUP BY M.nom_utilisateur
Run Code Online (Sandbox Code Playgroud)
但出了点问题; 因为我有这个错误:
1055 - SELECT列表的表达式#5不在GROUP BY子句中,并且包含非聚合列'mutuelle_bi.M.etat_bs',它在功能上不依赖于GROUP BY子句中的列; 这与sql_mode = only_full_group_by不兼容
我怎么可以通过解决这个问题的方式修改我的脚本, 因为我不应该修改我的sql server的任何配置文件.我应该只编写脚本
有什么建议 ??
小智 7
您还可以尝试禁用该only_full_group_by设置:
set global sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
Run Code Online (Sandbox Code Playgroud)
为我工作.
我认为您只需要条件聚合:
SELECT M.nom_utilisateur,
SUM(M.montant_bulletin ) as Montant_Total_BS,
SUM(M.montant_payer) as Montant_Total_payer,
SUM(M.etat_bs = 'Remboursé') as nbr_bs_total_payer,
SUM(M.etat_bs = 'Non remboursé') as nbr_bs_non_payer,
SUM(M.etat_bs = 'En cours') as nbr_bs_en_cours,
SUM(M.etat_bs = 'Nouveau') as nbr_bs_nouveau
FROM mutuelle_bi.`Mutuelle` M
WHERE M.nom_assurence = 'Star'
GROUP BY M.nom_utilisateur;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11239 次 |
| 最近记录: |