一个表为:用户资料表(账号,##,##)
,另一个表为用户购买物品的流水表(账号,金额,日期,##)
可是由于特殊原因,在用户资料表里同一个账号会有重复,
比如:会出现如下情况:
账号:
1
2
2
3
2
(2多次出现)流水表为:
账号,金额,日期,#
1, 200.00,20110101,
2, 300.30,20110102
3, 32.00, 20110403
3, 566.00, 20110403现在我想关联这两个表,并且关联的客户资料表要求是把那些重复的过滤为一条(比如把账号为2的过滤为只有一条然后再关联流水表)。如何关联?select * from 流水表 left join 用户资料表 on 用户资料表.账号=流水表.账号
这样关联会因为账号不是唯一的,所以会多出条数,所以如何能够让用户资料表中的那些多出的条数清出去?
不知我说明白了没,表达力差些,请见凉。
,另一个表为用户购买物品的流水表(账号,金额,日期,##)
可是由于特殊原因,在用户资料表里同一个账号会有重复,
比如:会出现如下情况:
账号:
1
2
2
3
2
(2多次出现)流水表为:
账号,金额,日期,#
1, 200.00,20110101,
2, 300.30,20110102
3, 32.00, 20110403
3, 566.00, 20110403现在我想关联这两个表,并且关联的客户资料表要求是把那些重复的过滤为一条(比如把账号为2的过滤为只有一条然后再关联流水表)。如何关联?select * from 流水表 left join 用户资料表 on 用户资料表.账号=流水表.账号
这样关联会因为账号不是唯一的,所以会多出条数,所以如何能够让用户资料表中的那些多出的条数清出去?
不知我说明白了没,表达力差些,请见凉。
from (select distinct 帐号 from 流水表) as 流水表
left join 用户资料表 on 用户资料表.账号=流水表.账号
from (select distinct 帐号 from 用户资料表) as 用户资料表
left join (select 帐号,sum(金额) as 金额 流水表 group by 帐号) as 流水表
on 用户资料表.账号=流水表.账号
这样?select *
from (select distinct 帐号 from 用户资料表) as 用户资料表
left join 流水表
on 用户资料表.账号=流水表.账号
from (select distinct 帐号 from 用户资料表) as 用户资料表
left join (select 帐号,日期,sum(金额) as 金额 流水表 group by 帐号,日期) as 流水表
on 用户资料表.账号=流水表.账号
2.用ROW_NUMBER() OVER(PARTION BY 账号 ORDER BY 账号) AS 行号,
然后取行号=1的记录即可,此方法可以处理账号相同的记录,无论其它字段是否相同
select *
from (select *,row_number() over (partition by 账号 order by getdate()) cnt
from 流水表)a
left join 用户资料表 b on a.账号=b.账号
where a.cnt = 1
from (select distinct 帐号 from 用户资料表) as 用户资料表
left join (select 帐号,日期,sum(金额) as 金额 流水表 group by 帐号,日期) as 流水表
on 用户资料表.账号=流水表.账号