当前位置: 代码迷 >> Sql Server >> 好手帮忙,两个表之间查询的SQL
  详细解决方案

好手帮忙,两个表之间查询的SQL

热度:99   发布时间:2016-04-24 09:39:38.0
高手帮忙,两个表之间查询的SQL
有两个表A和B,

A
PZHM,PJHM,CPXH,CPDJ,SL
1201,333,       201,     1,      20
1203,333,       201,     1,     120
1204,333,       202,     1,      20
1213,335,       203,     1,     320
1214,335,       203,     1,      20

B
PZHM,CPXH,CPDJ,SL
333,       201,     1,     220
335,       203,     1,     420
336,       201,     1,      20
现需查询出A表汇总后大于B表的记录,符合A.CPXH=B.CPXH AND A.CPDJ=B.CPDJ AND A.PJHM=B.PJHM

SELECT   cpxh, cpdj  pjhm, SUM(sl) AS sl
FROM a  t
WHERE  AND EXISTS
          (SELECT 1
         FROM B cp21
         WHERE  
               cp21.cpxh = t.cpxh AND cp21.pZhm = t.pJhm  AND  CP21.CPDJ = T.CPDJ AND 
                CP21.SL < t.sl)
GROUP BY   cpxh, cpdj ,pjhm
------解决思路----------------------

SELECT t.*
FROM (SELECT PJHM, CPXH, CPDJ, SUM(SL) SL FROM A GROUP BY PJHM, CPXH, CPDJ) t
  JOIN B ON B.PJHM=t.PJHM AND B.CPXH=t.CPXH AND B.CPDJ=t.CPDJ
WHERE t.SL>B.SL
  相关解决方案