i have problem with group by in this scenario
sumary by day in one row per day
tableA
ID Integer Primary key
DT DATE NOT NULL,
QU NUMERIC(18, 4),
PRICE NUMERIC(18, 2)
tableB
ID Integer Primary key
DT DATE NOT NULL,
QU NUMERIC(18, 4),
PRICE NUMERIC(18, 2)
i need some like
select
{A.DT or B.DT}, sum(A.QU), SUM(A.QU * A.PRICE), SUM(B.QU), SUM(B.QU *
A.PRICE)
FROM
tableA
tableB
GROUP BY {A.DT or B.DT ... ????}
result should by like
DT SUMA WARTA SUMB WARTB
2008-01-01 19 590 14 890
2008-01-02 12 789 11 654
................................................................
if i do this in this way
GROUP BY A.DT, B.DT i get mixed date sum
is this posible to do this in sql
or i must create stored procedure for this?
please help
Karol Bieniaszewski
Maybe I'm not understanding what you want, but I think this should be doable
with an inner join linked on the date
select a.dt, sum(a.qu), sum(a.qu * a.price), sum(b.qu), sum(b.qu * b.price)
from tablea a
inner join tableb b on b.dt = a.dt
group by a.dt
However, this assumes there is the same number of records in both tables for
a given date. If there are different numbers of records then this will give
you wrong totals. In that case you would need to use subqueries which will
probably not perform well.
You could create a view on each table that gets the correct sums for that
table by date, and then you can do the above query on those views to get
correct totals.
--
Wayne Niddery - TeamB (www.teamb.com)
Winwright, Inc. (www.winwright.ca)
Karol Bieniasszewski
Views can not be used to solve this
becaouse of some empty month in one of the tables
any more concept?
Karol Bieniaszewski
> i solved this with union and Views and some trick with SUM
Karol Bieniaszewski
Karol Bieniaszewski
When querying the views, try a left join instead of the inner join in my
example query.
becaouse of problem with storing plans
i change view to selectable stored procedure
and all work as expected and performance also is ok :)
Karol Bieniaszewski