问题描述
我正在使用postgresql作为数据库。我有一个表MASTER(A,B,C,D,N1,N2,N3,N4,N5,N6)其中主键是(A,B,C,D)和N1,N2,N3,N4,N5 ,N6是数字列。
我有如下查询,以获取从MASTERCOMB的每个列表中选择的每个A的汇总数据。
SELECT MASTERCOM.A,STATS.sumn1,STATS.sumn2,STATS.sumn3,STATS.sumn4,STATS.sumn5,STATS.sumn6
FROM (WITH
sum1 AS (SELECT A,SUM(N1) FROM MASTER WHERE B = $1 GROUP BY A ORDER BY SUM(N1) DESC LIMIT $2),sum2 AS (SELECT A,SUM(N2) FROM MASTER WHERE B = $1 GROUP BY A ORDER BY SUM(N2) DESC LIMIT $2),sum3 AS (SELECT A,SUM(N3) FROM MASTER WHERE B = $1 GROUP BY A ORDER BY SUM(N3) DESC LIMIT $2),sum4 AS (SELECT A,SUM(N4) FROM MASTER WHERE B = $1 GROUP BY A ORDER BY SUM(N4) DESC LIMIT $2),sum5 AS (SELECT A,SUM(N5) FROM MASTER WHERE B = $1 GROUP BY A ORDER BY SUM(N5) DESC LIMIT $2),sum6 AS (SELECT A,SUM(N6) FROM MASTER WHERE B = $1 GROUP BY A ORDER BY SUM(N6) DESC LIMIT $2)
SELECT disTINCT COALESCE(sum1.A,sum2.A,sum3.A,sum4.A,sum5.A,sum6.A) A
FROM sum1
FULL OUTER JOIN sum2 ON sum2.A = sum1.A
FULL OUTER JOIN sum3 ON sum3.A = sum1.A
FULL OUTER JOIN sum4 ON sum4.A = sum1.A
FULL OUTER JOIN sum5 ON sum5.A = sum1.A
FULL OUTER JOIN sum6 ON sum6.A = sum1.A) MASTERCOMB
LEFT JOIN (SELECT A,SUM(N1) sumn1,SUM(N2) sumn2,SUM(N3) sumn3,SUM(N4) sumn4,SUM(N5) sumn5,SUM(N6 sumn6)
FROM MASTER WHERE B = $1 GROUP BY A) AS STATS
ON STATS.A = MASTERCOMB.A
这只是WHERE子句中带有B的一种查询。我可能需要查询不同的组合,例如“ WHERE C = $ 3”或“ WHERE D = $ 4”。在极少数情况下,我可能不得不同时查询B,C和D的多个条件的组合;
方法1:
方法2:
SMRY_A_B_C_D的可能值为
(valA,valB,'N/A',sumn1,sumn2,sumn3,sumn4,sumn5,sumn6)
(valA,'N/A,valC,sumn6)
(valA,'valD',sumn6)
问题:
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)