How to combine the two following queries?
I have one query as follows, the results of which need to be incorporated into the second query:
First query:
SELECT ASSETID, NAME, ASSETGROUP
FROM ASSETTABLE AS A
WHERE (DATAAREAID IN (@CompanyID)) AND (NOT EXISTS
(SELECT 1 AS Expr1
FROM ASSETTRANS AS AT
WHERE (TRANSTYPE = 12) AND (TRANSDATE < CONVERT(datetime, '01/04/2011', 103)) AND (ASSETID = A.ASSETID) OR
(TRANSTYPE = 13) AND (TRANSDATE < CONVERT(datetime, '01/04/2011', 103)) AND (ASSETID = A.ASSETID)))
Second query:
SELECT ASSETTABLE.ASSETID, ASSETTABLE.DATAAREAID, ASSETTABLE.ASSETGROUP, ASSETTABLE.NAME, CASE WHEN totalcost.totalcost IS NULL
THEN 0 ELSE Totalcost.Totalcost END AS Cost
FROM ASSETTABLE LEFT OUTER JOIN
(SELECT ASSETTRANS.DATAAREAID, ASSETTRANS.ASSETID, SUM(ASSETTRANS.AMOUNTMST) AS TotalCost
FROM ASSETTRANS INNER JOIN
(SELECT RECID, TRANSDATE, DATAAREAID
FROM ASSETTRANS AS ASSETTRANS_2
WHERE (TRANSDATE <= @Date)) AS DateCost ON ASSETTRANS.RECID = DateCost.RECID AND
ASSETTRANS.DATAAREAID = DateCost.DATAAREAID INNER JOIN
(SELECT RECID, TRANSTYPE, DATAAREAID
FROM ASSETTRANS AS ASSETTRANS_1
WHERE (TRANSTYPE = 1)) AS TypeCost ON TypeCost.RECID = ASSETTRANS.RECID AND
TypeCost.DATAAREAID = ASSETTRANS.DATAAREAID
GROUP BY ASSETTRANS.DATAAREAID, ASSETTRANS.ASSETID) AS TotalCost ON ASSETTABLE.ASSETID = TotalCost.ASSETID AND
ASSETTABLE.DATAAREAID = TotalCost.DATAAREAID
On the second query, on the third line, where it says 'From Assettable' - I need Assettable to only contain records which are there after applying the first query. How do I do this please?
April 15th, 2011 11:02am
Try this:
SELECT ASSETTABLE.ASSETID, ASSETTABLE.DATAAREAID, ASSETTABLE.ASSETGROUP, ASSETTABLE.NAME, CASE WHEN totalcost.totalcost IS NULL
THEN 0 ELSE Totalcost.Totalcost END AS Cost
FROM
(SELECT ASSETID, NAME, ASSETGROUP, DATAAREAID
FROM ASSETTABLE AS A
WHERE (DATAAREAID IN (@CompanyID)) AND (NOT EXISTS
(SELECT 1 AS Expr1
FROM ASSETTRANS AS AT
WHERE (TRANSTYPE = 12) AND (TRANSDATE < CONVERT(datetime, '01/04/2011', 103)) AND (ASSETID = A.ASSETID) OR
(TRANSTYPE = 13) AND (TRANSDATE < CONVERT(datetime, '01/04/2011', 103)) AND (ASSETID = A.ASSETID)))) ASSETTABLE LEFT OUTER JOIN
(SELECT ASSETTRANS.DATAAREAID, ASSETTRANS.ASSETID, SUM(ASSETTRANS.AMOUNTMST) AS TotalCost
FROM ASSETTRANS INNER JOIN
(SELECT RECID, TRANSDATE, DATAAREAID
FROM ASSETTRANS AS ASSETTRANS_2
WHERE (TRANSDATE <= @Date)) AS DateCost ON ASSETTRANS.RECID = DateCost.RECID AND
ASSETTRANS.DATAAREAID = DateCost.DATAAREAID INNER JOIN
(SELECT RECID, TRANSTYPE, DATAAREAID
FROM ASSETTRANS AS ASSETTRANS_1
WHERE (TRANSTYPE = 1)) AS TypeCost ON TypeCost.RECID = ASSETTRANS.RECID AND
TypeCost.DATAAREAID = ASSETTRANS.DATAAREAID
GROUP BY ASSETTRANS.DATAAREAID, ASSETTRANS.ASSETID) AS TotalCost ON ASSETTABLE.ASSETID = TotalCost.ASSETID AND
ASSETTABLE.DATAAREAID = TotalCost.DATAAREAID
-Remember to mark as helpful/the answer if you agree with the post.
Free Windows Admin Tool Kit Click here and download it now
April 15th, 2011 4:03pm