显示小计的DB2查询

显示小计的DB2查询,db2,Db2,实际使用的查询: SELECT X.TNO,Y.KID,X.TBALANCE FROM (SELECT A.TNO,SUM(A.TBAL) TBALANCE,B.CNO FROM TABLE1 A,TABLE2 B WHERE A.TNO=B.TNO AND B.CPRIM='Y' AND A.TCODE='M' GROUP BY A.TNO,B.CNO) X, TABLE3 Y WHERE X.CNO=Y.CNO; 实际结果: TABLE3.KID

实际使用的查询:

SELECT X.TNO,Y.KID,X.TBALANCE FROM    
(SELECT A.TNO,SUM(A.TBAL) TBALANCE,B.CNO FROM TABLE1 A,TABLE2 B    
WHERE A.TNO=B.TNO AND B.CPRIM='Y' AND A.TCODE='M'    
GROUP BY A.TNO,B.CNO) X, TABLE3 Y     
WHERE X.CNO=Y.CNO;    
实际结果:

TABLE3.KID   TABLE2.TNO   TABLE1.SUM(TBAL)
------------------------------------------  
R23          34           30   
R23          35           40  
R55          38           10   
R55          39           50
我有三张桌子如下

表1:

TNO  TBAL  TCODE 
-----------------   
34      30    M  
35      40    M  
36      50    N  
38      10    M  
39      50    M  
表2:

TNO  CNO   CPRIM  
----------------
34     A3    Y  
34     B3    N  
34     C1    N  
35     D1    Y  
35     D2    N  
38     E2    Y  
38     E4    N  
39     F3    Y  
39     F5    N
表3:

CNO   KID  
----------  
A3     R23  
35     R23  
E2     R55  
F3     R55  
需要上面3个表中的结果,其中表1.TCODE='M'和表2.CPRIM='Y':

TABLE3.KID   TABLE2.TNO   TABLE1.SUM(TBAL)
------------------------------------------  
R23          34           70   
R23          35           70  
R55          38           60  
R55          39           60  

请帮助我实现上述结果

你确定你想要的结果吗?这对我来说没有意义

<>这将是我所考虑的标准聚合:

SELECT C.KID,B.CNO, SUM(A.TBAL)
FROM TABLE3 C
     JOIN TABLE2 B ON B.CNO = C.CNO
     JOIN TABLE1 A ON A.TNO = B.TNO 
WHERE B.CPRIM='Y' AND A.TCODE='M'
GROUP BY C.KID,B.CNO
但是要给出你想要的结果

WITH KIDSUM as (SELECT C.KID, SUM(A.TBAL) as SUMBAL      
                  FROM TABLE3 C                          
                       JOIN TABLE2 B ON B.CNO = C.CNO    
                       JOIN TABLE1 A ON A.TNO = B.TNO    
                 WHERE B.CPRIM='Y' AND A.TCODE='M'       
                 GROUP BY C.KID                          
)                                                        
SELECT K.KID,B.TNO, K.SUMBAL                             
FROM TABLE3 C                                            
     JOIN TABLE2 B ON B.CNO = C.CNO                      
     JOIN TABLE1 A ON A.TNO = B.TNO                      
     JOIN KIDSUM K ON K.KID = C.KID                      
WHERE B.CPRIM='Y' AND A.TCODE='M'                        

嗨,查尔斯,我尝试了以下方法:从表1、表2、表3中选择表3.KID、SUMTABLE1.TNO、表1.TBAL,其中表1.TNO=TABLE2.TNO和表1.TCODE='M'和表2.CPRIM='Y'以及表2.CNO=TABLE3.CNO按表3.KID分组,表1.t您应该编辑您的问题并包括您尝试过的内容。结果你看到了……查尔斯,我编辑了这个问题,包括了我试过的内容。Pl现在看看表3中的数据是否有输入错误?第35行,R23看起来应该是D1,R23