Reputation: 609
I have the below query which I am trying to sum, at the minute, I am getting two lines, one with each sum of each query, is there anyway to add the two sums so one row with the total sum is returned of both queries? Thank you in advance
SELECT count(*)
FROM
eUser eUser2 RIGHT OUTER JOIN prcIncidentManagement ON (eUser2.eUserName=prcIncidentManagement.AssignedTo)
INNER JOIN eFolder ON (prcIncidentManagement.EFOLDERID=eFolder.eFolderID)
WHERE
eFolder.eCreationTime between '01/01/2015' and '13/10/2015'
union
SELECT count(*)
FROM
eUser RIGHT OUTER JOIN prcRequestFulfilment ON (prcRequestFulfilment.AssignedTo=eUser.eUserName)
INNER JOIN eFolder ON (eFolder.eFolderID=prcRequestFulfilment.EFOLDERID)
WHERE
eFolder.eCreationTime between '01/01/2015' and '13/10/2015'
Upvotes: 0
Views: 55
Reputation: 2379
Well you can take the both output and then sum. No need of Using Union all Or Union.
Declare @SumOfIncident int= (SELECT count(*)
FROM eUser eUser2 RIGHT OUTER JOIN prcIncidentManagement ON (eUser2.eUserName=prcIncidentManagement.AssignedTo) INNER JOIN eFolder ON (prcIncidentManagement.EFOLDERID=eFolder.eFolderID)
WHERE eFolder.eCreationTime between '01/01/2015' and '13/10/2015' )
Declare @requestOfFullfillment int= (SELECT count(*)
FROM eUser eUser2 RIGHT OUTER JOIN prcIncidentManagement ON (eUser2.eUserName=prcIncidentManagement.AssignedTo) INNER JOIN eFolder ON (prcIncidentManagement.EFOLDERID=eFolder.eFolderID)
WHERE eFolder.eCreationTime between '01/01/2015' and '13/10/2015' )
SELECT @SumOfIncident + @requestOfFullfillment
Upvotes: 0
Reputation: 9335
Try:
select sum(cnt) total_cnt
from (
SELECT count(*) cnt
FROM eUser eUser2
RIGHT OUTER JOIN prcIncidentManagement ON eUser2.eUserName = prcIncidentManagement.AssignedTo
INNER JOIN eFolder ON prcIncidentManagement.EFOLDERID = eFolder.eFolderID
WHERE eFolder.eCreationTime between '01/01/2015' and '10/13/2015'
union all
SELECT count(*)
FROM eUser
RIGHT OUTER JOIN prcRequestFulfilment ON prcRequestFulfilment.AssignedTo = eUser.eUserName
INNER JOIN eFolder ON eFolder.eFolderID = prcRequestFulfilment.EFOLDERID
WHERE eFolder.eCreationTime between '01/01/2015' and '10/13/2015'
) x
You can use union all
instead of union
.
If you use union
and the count
returned by the first and second query are same then, union
will remove one count as it allow only distinct values.
So, you wont get the result you expecting.
Date must in the form mm/dd/yyyy
else use convert
to get the data from string.
Upvotes: 0
Reputation: 20489
This should do it for you, except I recommend you use UNION ALL
instead of UNION
.
If both your queries return the same value, then the UNION
operator will make a implicit DISTINCT
between the two values and your SUM
will just be one of those values, instead of being doubled.
SELECT SUM(cnt_val) Sum_Values
FROM (
SELECT count(*) cnt_val
FROM eUser eUser2
RIGHT JOIN prcIncidentManagement
ON (eUser2.eUserName = prcIncidentManagement.AssignedTo)
INNER JOIN eFolder
ON (prcIncidentManagement.EFOLDERID = eFolder.eFolderID)
WHERE eFolder.eCreationTime BETWEEN '01/01/2015'
AND '13/10/2015'
UNION ALL
SELECT count(*) cnt_val
FROM eUser
RIGHT JOIN prcRequestFulfilment
ON (prcRequestFulfilment.AssignedTo = eUser.eUserName)
INNER JOIN eFolder
ON (eFolder.eFolderID = prcRequestFulfilment.EFOLDERID)
WHERE eFolder.eCreationTime BETWEEN '01/01/2015'
AND '13/10/2015'
) Result_Set
So, assuming the results of the two queries are:
2 --> first query result
2 --> second query result
Then the total sum will be 2, if you're using UNION
instead of UNION ALL
.
Upvotes: 1
Reputation: 2490
This should work -
SELECT SUM(Cnt) FROM
(SELECT count(*) AS Cnt
FROM
eUser eUser2 RIGHT OUTER JOIN prcIncidentManagement ON (eUser2.eUserName=prcIncidentManagement.AssignedTo)
INNER JOIN eFolder ON (prcIncidentManagement.EFOLDERID=eFolder.eFolderID)
WHERE
eFolder.eCreationTime between '01/01/2015' and '13/10/2015'
union
SELECT count(*)
FROM
eUser RIGHT OUTER JOIN prcRequestFulfilment ON (prcRequestFulfilment.AssignedTo=eUser.eUserName)
INNER JOIN eFolder ON (eFolder.eFolderID=prcRequestFulfilment.EFOLDERID)
WHERE
eFolder.eCreationTime between '01/01/2015' and '13/10/2015') A
Upvotes: 0