我致力于将另一家公司的数据制作成我们可以使用的格式。 为了计算会费,我使用此代码创建了一个新表。
SELECT
ROW_NUMBER() OVER(PARTITION BY a.memid ORDER BY a.nexttrandate DESC) as 'RowNum',
a.memid as 'memid' ,
a.nexttrandate as 'date', b.status as 'status',
SUM(convert(decimal(18,2),a.price)) as 'price', a.billtoid as 'parentid'
INTO
lame
FROM
arrr a
JOIN
members b ON a.memid = b.memid
GROUP BY
a.memid, a.billtoid, a.nexttrandate, b.status;
此表创建的内容基本上是一个交易历史记录,也显示下一个结算日期。这就是为什么我做Rownum并按交易日期订购,所以我可以使用RowNum ='1'来获得最新的。
这主要完成了我的需要。
但是我得到的数据看起来像这样。
memid date parentid price
_____ ____ ________ _____
1 2012 1 59
2 2012 1 40
我需要根据与memid相同的parentid添加这两个价格。我不介意如果两个值都出现在99作为另一个简单的更新,我可以使第二个0
我发现了一个帖子并做了变化。
UPDATE lame
SET price = temp2.pricesum
FROM lame
INNER JOIN
(SELECT arrr.memid, SUM(convert(decimal(18,2),arrr.price)) as pricesum,
arrr.billtoid, arrr.nexttrandate
FROM arrr WHERE arrr.nexttrandate = arrr.nexttrandate and arrr.billtoid = arrr.memid
GROUP BY arrr.memid, arrr.billtoid, arrr.nexttrandate) as temp2
ON temp2.memid = lame.memid;
基本上arrr.billtoid = arrr.memid是我天真的想要将这些添加到一起的地方,但显然不会起作用。它所引用的只是当memid和billtoid在一行中相同时。
有没有办法让上面的表格加在一起?
抱歉格式不正确。
是的,我意识到我可能正在努力实现这一目标。
答案 0 :(得分:0)
鉴于你的输出,这不是答案吗?
select A.memid, B.date, B.parentid, sum(B.price)
from ( [giant query] ) as A
join ( [giant query] ) as B
on A.memid = B.parentid
group by A.memid, B.date, B.parentid