on 07-07-2010 4:00 AM
Hi Experts,
I have the following query:
SELECT SUM(T0.SYSDeb - T0.SYSCred) AS 'Production'
FROM JDT1 T0 INNER JOIN OJDT T1 ON T0.TransId = T1.TransId
WHERE T0.Account in ('_SYS00000000238','_SYS00000000239','_SYS00000000244') AND T1.RefDate >= [%0] AND T1.RefDate <= [%1]
UNION
SELECT SUM(T0.SYSDeb - T0.SYSCred) AS 'Production'
FROM JDT1 T0 INNER JOIN OJDT T1 ON T0.TransId = T1.TransId
WHERE T0.Account = '_SYS00000000053' AND T1.RefDate >= [%0] AND T1.RefDate <= [%1]
I need to add a new Union to show the First 'select' result minus the Second 'select' result. Then I need to also show this as a persentage in another Union underneath.
Any help would be appreciated.
Marli
Hi Marli,
Try this:
SELECT 'Revenue' as [Type],
(SUM(T0.SYSDeb - T0.SYSCred) AS 'Production'
FROM JDT1 T0
WHERE T0.Account in ('_SYS00000000238','_SYS00000000239','_SYS00000000244')
UNION
SELECT 'COGS' as [Type], SUM(T0.SYSDeb - T0.SYSCred) AS 'Production'
FROM JDT1 T0
WHERE T0.Account = '_SYS00000000053'
UNION
select 'GP' as [Type],
(
(SELECT SUM(T0.SYSDeb - T0.SYSCred)
FROM JDT1 T0 INNER JOIN OJDT T1 ON T0.TransId = T1.TransId
WHERE T0.Account in ('_SYS00000000238','_SYS00000000239','_SYS00000000244'))
+
(SELECT SUM(T0.SYSDeb - T0.SYSCred)
FROM JDT1 T0 INNER JOIN OJDT T1 ON T0.TransId = T1.TransId
WHERE T0.Account in ('_SYS00000000053'))
) as 'Production'
UNION
select 'GP&' as [Type],
(
(SELECT SUM(T0.SYSDeb - T0.SYSCred)
FROM JDT1 T0 INNER JOIN OJDT T1 ON T0.TransId = T1.TransId
WHERE T0.Account in ('_SYS00000000053'))
/
(SELECT SUM(T0.SYSDeb - T0.SYSCred)
FROM JDT1 T0 INNER JOIN OJDT T1 ON T0.TransId = T1.TransId
WHERE T0.Account in ('_SYS00000000238','_SYS00000000239','_SYS00000000244'))
) as 'Production'
Thanks,
Gordon
Edited by: Gordon Du on Jul 9, 2010 11:25 AM
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Jesper,
Thanks for the SQL advise. This error was because of brackets that was not closed in the 1st select statement.
SELECT 'Revenue' as [Type],
(SUM(T0.SYSDeb - T0.SYSCred)) AS 'Production'
FROM JDT1 T0
WHERE T0.Account in ('_SYS00000000238','_SYS00000000239','_SYS00000000244')
UNION
SELECT 'COGS' as [Type], SUM(T0.SYSDeb - T0.SYSCred) AS 'Production'
FROM JDT1 T0
WHERE T0.Account = '_SYS00000000053'
UNION
select 'GP' as [Type],
(
(SELECT SUM(T0.SYSDeb - T0.SYSCred)
FROM JDT1 T0 INNER JOIN OJDT T1 ON T0.TransId = T1.TransId
WHERE T0.Account in ('_SYS00000000238','_SYS00000000239','_SYS00000000244'))
+
(SELECT SUM(T0.SYSDeb - T0.SYSCred)
FROM JDT1 T0 INNER JOIN OJDT T1 ON T0.TransId = T1.TransId
WHERE T0.Account in ('_SYS00000000053'))
) as 'Production'
UNION
select 'GP&' as [Type],
(
(SELECT SUM(T0.SYSDeb - T0.SYSCred)
FROM JDT1 T0 INNER JOIN OJDT T1 ON T0.TransId = T1.TransId
WHERE T0.Account in ('_SYS00000000053'))
/
(SELECT SUM(T0.SYSDeb - T0.SYSCred)
FROM JDT1 T0 INNER JOIN OJDT T1 ON T0.TransId = T1.TransId
WHERE T0.Account in ('_SYS00000000238','_SYS00000000239','_SYS00000000244'))
) as 'Production'
Hi Marli,
From the description thios might work.
Let us know how it goes.
SELECT SUM(T0.SYSDeb - T0.SYSCred) AS 'Production'
FROM JDT1 T0 INNER JOIN OJDT T1 ON T0.TransId = T1.TransId
WHERE T0.Account in ('_SYS00000000238','_SYS00000000239','_SYS00000000244') AND T1.RefDate >= [%0] AND T1.RefDate <= [%1]
UNION
SELECT SUM(T0.SYSDeb - T0.SYSCred) AS 'Production'
FROM JDT1 T0 INNER JOIN OJDT T1 ON T0.TransId = T1.TransId
WHERE T0.Account = '_SYS00000000053' AND T1.RefDate >= [%0] AND T1.RefDate <= [%1]
UNION
select
(
(SELECT SUM(T0.SYSDeb - T0.SYSCred)
FROM JDT1 T0 INNER JOIN OJDT T1 ON T0.TransId = T1.TransId
WHERE T0.Account in ('_SYS00000000238','_SYS00000000239','_SYS00000000244') AND T1.RefDate >= [%0] AND T1.RefDate <= [%1])
-
(SELECT SUM(T0.SYSDeb - T0.SYSCred)
FROM JDT1 T0 INNER JOIN OJDT T1 ON T0.TransId = T1.TransId
WHERE T0.Account in ('_SYS00000000238','_SYS00000000239','_SYS00000000244') AND T1.RefDate >= [%0] AND T1.RefDate <= [%1])
) as 'Production'
UNION
select
(
(SELECT SUM(T0.SYSDeb - T0.SYSCred)
FROM JDT1 T0 INNER JOIN OJDT T1 ON T0.TransId = T1.TransId
WHERE T0.Account in ('_SYS00000000238','_SYS00000000239','_SYS00000000244') AND T1.RefDate >= [%0] AND T1.RefDate <= [%1])
/
(SELECT SUM(T0.SYSDeb - T0.SYSCred)
FROM JDT1 T0 INNER JOIN OJDT T1 ON T0.TransId = T1.TransId
WHERE T0.Account in ('_SYS00000000238','_SYS00000000239','_SYS00000000244') AND T1.RefDate >= [%0] AND T1.RefDate <= [%1])
) as 'Production'
Again, if this is not it, let us know. It might be that you need to change the last 2 queries around, might be deviding by the incorrect query, but only you will know that.
Jesper
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Jesper,
Thanks for the help.
I tested this and found that if I run one the first 2 statements I get the correct totals, but as soon as I add the 3rd and 4th statements the 1st two amounts also change. I have played around with this and made small changes. In this new query, I get the right totals, but the order in which they display is not the order of the Unions.
SELECT SUM(T0.SYSDeb - T0.SYSCred) AS 'Production'
FROM JDT1 T0
WHERE T0.Account in ('_SYS00000000238','_SYS00000000239','_SYS00000000244')
UNION
SELECT SUM(T0.SYSDeb - T0.SYSCred) AS 'Production'
FROM JDT1 T0
WHERE T0.Account = '_SYS00000000053'
UNION
select
(
(SELECT SUM(T0.SYSDeb - T0.SYSCred)
FROM JDT1 T0 INNER JOIN OJDT T1 ON T0.TransId = T1.TransId
WHERE T0.Account in ('_SYS00000000238','_SYS00000000239','_SYS00000000244'))
+
(SELECT SUM(T0.SYSDeb - T0.SYSCred)
FROM JDT1 T0 INNER JOIN OJDT T1 ON T0.TransId = T1.TransId
WHERE T0.Account in ('_SYS00000000053'))
) as 'Production'
UNION
select
(
(SELECT SUM(T0.SYSDeb - T0.SYSCred)
FROM JDT1 T0 INNER JOIN OJDT T1 ON T0.TransId = T1.TransId
WHERE T0.Account in ('_SYS00000000053'))
/
(SELECT SUM(T0.SYSDeb - T0.SYSCred)
FROM JDT1 T0 INNER JOIN OJDT T1 ON T0.TransId = T1.TransId
WHERE T0.Account in ('_SYS00000000238','_SYS00000000239','_SYS00000000244'))
) as 'Production'
Also the last UNION need to multiply by 100 to get the persentage.
Thanks again for your help.
Marli
Hi Marli,
Is Union a must for your query? Do you need the difference and percentage column wise?
Thanks,
Gordon
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
108 | |
12 | |
11 | |
6 | |
6 | |
4 | |
4 | |
3 | |
3 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.