使用 count 和 group by 减去 SQL 查询

萨尔科夫

我有两个查询,我需要用第二个查询从第一个查询中减去“antal”列的结果。

第一个查询如下所示:

SELECT A402.Objgrpben, A402.Objgrupp, A402.FärgObjektgrupp, COUNT(A806.Aordernr) AS Antal
FROM A806 INNER JOIN
    A406 ON A806.Ställeid = A406.Ställeid INNER JOIN
    A400 ON A806.Objektid = A400.Objektid INNER JOIN
    A402 ON A400.ObjGrupp = A402.Objgrupp INNER JOIN
    Cams_Global.dbo.A957 ON A806.LevId = Cams_Global.dbo.A957.LevId INNER JOIN
    Cams_Global.dbo.A960 ON A406.OmrådesNr = Cams_Global.dbo.A960.OmrådesNr
WHERE (Cams_Global.dbo.A960.OmrådesNr IN (1031, 1046, 1032)) AND (A406.Kund = 5566321537) AND 
    (A806.Beställning = 0) AND (A400.ObjGrupp IN (1161, 1000, 100, 10, 40, 1157, 50, 60, 20, 70)) AND 
                         (Cams_Global.dbo.A957.LevIdGrupp IN (1001, 1000)) AND (A806.ProtokollSparad = 0)
GROUP BY A402.Objgrpben, A402.Objgrupp, A402.FärgObjektgrupp
ORDER BY A402.Objgrpben

第一个查询的结果:

+--------------------------------+----------+----------------------+-------+
| Objgrpben                      | Objgrupp | FärgObjektgrupp      | Antal |
+--------------------------------+----------+----------------------+-------+
| Badplatser                     | 1161     | #717171              | 7     |
+--------------------------------+----------+----------------------+-------+
| Fastighet                      | 1000     |                      | 1     |
+--------------------------------+----------+----------------------+-------+
| Fjärrvärme                     | 100      | #974706              | 3     |
+--------------------------------+----------+----------------------+-------+
| Gator och Trafik               | 10       | #ff005e              | 8     |
+--------------------------------+----------+----------------------+-------+
| Gatubelysning                  | 40       | #FFFF00              | 15    |
+--------------------------------+----------+----------------------+-------+
| Lekplatser                     | 1157     | #00939c              | 17    |
+--------------------------------+----------+----------------------+-------+
| Park o Grönområden             | 50       | #008124              | 1     |
+--------------------------------+----------+----------------------+-------+
| Renhållning                    | 60       | #ff00e4              | 4     |
+--------------------------------+----------+----------------------+-------+
| Vatten och Avlopp              | 20       | #0701ff              | 1     |
+--------------------------------+----------+----------------------+-------+
| Vinterväghållning              | 70       | #00ffe4              | 2     |
+--------------------------------+----------+----------------------+-------+

第二个查询如下所示:

SELECT A402.Objgrpben, A402.Objgrupp, A402.FärgObjektgrupp, COUNT(A806.Aordernr) AS Antal
FROM A806 INNER JOIN
    A406 ON A806.Ställeid = A406.Ställeid INNER JOIN
    A400 ON A806.Objektid = A400.Objektid INNER JOIN
    A402 ON A400.ObjGrupp = A402.Objgrupp INNER JOIN
    Cams_Global.dbo.A957 ON A806.LevId = Cams_Global.dbo.A957.LevId INNER JOIN
    Cams_Global.dbo.A960 ON A406.OmrådesNr = Cams_Global.dbo.A960.OmrådesNr
WHERE (Cams_Global.dbo.A960.OmrådesNr IN (1031, 1046)) AND (A406.Kund = 5566321537) AND 
    (A806.Beställning = 0) AND (A400.ObjGrupp IN (1161, 1000, 100, 10, 40, 1157, 50, 60, 20, 70)) AND 
                         (Cams_Global.dbo.A957.LevIdGrupp IN (1001, 1000)) AND (A806.ProtokollSparad = 0)
GROUP BY A402.Objgrpben, A402.Objgrupp, A402.FärgObjektgrupp
ORDER BY A402.Objgrpben,

以及第二个查询的结果:

+--------------------------------+----------+----------------------+-------+
| Objgrpben                      | Objgrupp | FärgObjektgrupp      | Antal |
+--------------------------------+----------+----------------------+-------+
| Badplatser                     | 1161     | #717171              | 7     |
+--------------------------------+----------+----------------------+-------+
| Fastighet                      | 1000     |                      | 1     |
+--------------------------------+----------+----------------------+-------+
| Fjärrvärme                     | 100      | #974706              | 2     |
+--------------------------------+----------+----------------------+-------+
| Gator och Trafik               | 10       | #ff005e              | 3     |
+--------------------------------+----------+----------------------+-------+
| Gatubelysning                  | 40       | #FFFF00              | 1     |
+--------------------------------+----------+----------------------+-------+
| Lekplatser                     | 1157     | #00939c              | 4     |
+--------------------------------+----------+----------------------+-------+
| Park o Grönområden             | 50       | #008124              | 1     |
+--------------------------------+----------+----------------------+-------+

我追求的结果是:

+--------------------------------+----------+----------------------+-------+
| Objgrpben                      | Objgrupp | FärgObjektgrupp      | Antal |
+--------------------------------+----------+----------------------+-------+
| Badplatser                     | 1161     | #717171              | 0     |
+--------------------------------+----------+----------------------+-------+
| Fastighet                      | 1000     |                      | 0     |
+--------------------------------+----------+----------------------+-------+
| Fjärrvärme                     | 100      | #974706              | 1     |
+--------------------------------+----------+----------------------+-------+
| Gator och Trafik               | 10       | #ff005e              | 5     |
+--------------------------------+----------+----------------------+-------+
| Gatubelysning                  | 40       | #FFFF00              | 14    |
+--------------------------------+----------+----------------------+-------+
| Lekplatser                     | 1157     | #00939c              | 13    |
+--------------------------------+----------+----------------------+-------+
| Park o Grönområden             | 50       | #008124              | 0     |
+--------------------------------+----------+----------------------+-------+
| Renhållning                    | 60       | #ff00e4              | 4     |
+--------------------------------+----------+----------------------+-------+
| Vatten och Avlopp              | 20       | #0701ff              | 1     |
+--------------------------------+----------+----------------------+-------+
| Vinterväghållning              | 70       | #00ffe4              | 2     |
+--------------------------------+----------+----------------------+-------+

即使总和为零,我也想保留该行。

胜利的加拉塔
SELECT t.Objgrpben,
       t.Objgrupp,
       t.FärgObjektgrupp,
       SUM(t.Antal) AS Antal
  FROM (SELECT A402.Objgrpben,
               A402.Objgrupp,
               A402.FärgObjektgrupp,
               COUNT(A806.Aordernr) AS Antal FROM A806
        INNER JOIN A406
          ON A806.Ställeid = A406.Ställeid
        INNER JOIN A400
          ON A806.Objektid = A400.Objektid
        INNER JOIN A402
          ON A400.ObjGrupp = A402.Objgrupp
        INNER JOIN Cams_Global.dbo.A957
          ON A806.LevId = Cams_Global.dbo.A957.LevId
        INNER JOIN Cams_Global.dbo.A960
          ON A406.OmrådesNr = Cams_Global.dbo.A960.OmrådesNr WHERE (Cams_Global.dbo.A960.OmrådesNr IN (1031, 1046, 1032))
         AND (A406.Kund = 5566321537)
         AND (A806.Beställning = 0)
         AND (A400.ObjGrupp IN (1161, 1000, 100, 10, 40, 1157, 50, 60, 20, 70))
         AND (Cams_Global.dbo.A957.LevIdGrupp IN (1001, 1000))
         AND (A806.ProtokollSparad = 0)
       GROUP BY A402.Objgrpben,
                A402.Objgrupp,
                A402.FärgObjektgrupp

      UNION ALL

      SELECT A402.Objgrpben,
             A402.Objgrupp,
             A402.FärgObjektgrupp,
             -1 * COUNT(A806.Aordernr) AS Antal FROM A806
        INNER JOIN A406
          ON A806.Ställeid = A406.Ställeid
        INNER JOIN A400
          ON A806.Objektid = A400.Objektid
        INNER JOIN A402
          ON A400.ObjGrupp = A402.Objgrupp
        INNER JOIN Cams_Global.dbo.A957
          ON A806.LevId = Cams_Global.dbo.A957.LevId
        INNER JOIN Cams_Global.dbo.A960
          ON A406.OmrådesNr = Cams_Global.dbo.A960.OmrådesNr WHERE (Cams_Global.dbo.A960.OmrådesNr IN (1031, 1046))
         AND (A406.Kund = 5566321537)
         AND (A806.Beställning = 0)
         AND (A400.ObjGrupp IN (1161, 1000, 100, 10, 40, 1157, 50, 60, 20, 70))
         AND (Cams_Global.dbo.A957.LevIdGrupp IN (1001, 1000))
         AND (A806.ProtokollSparad = 0)
       GROUP BY A402.Objgrpben,
                A402.Objgrupp,
                A402.FärgObjektgrupp) t
GROUP BY t.Objgrpben,
         t.Objgrupp,
         t.FärgObjektgrupp

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章