我有两个查询,我需要用第二个查询从第一个查询中减去“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] 删除。
我来说两句