我想基本上拆分一列:
我在Id的基础上加入。
假设数字为100,Name
可能有多个学校(假设为3),所以我想平均将100分为3并进行连接。
样本决赛桌
Id Name School Number
---------------------------
1 ABC A 33.33
1 ABC B 33.33
1 ABC C 33.33
答案 0 :(得分:1)
您可以使用count(*) over(
id
获取每个partition by a.Id)
的计数,然后将数字除以。
测试设置:rextester:http://rextester.com/JQK48793
create table a (id int, name char(3), number decimal(9,2))
insert into a
values (1,'ABC',100.0)
create table b (id int, name char(3), school char(1))
insert into b values
(1,'ABC','A')
,(1,'ABC','B')
,(1,'ABC','C')
查询:
select
a.Id
, a.Name
, b.School
, Number = (a.Number+.0) / count(*) over (partition by a.Id)
from a
inner join b
on a.Id = b.Id
结果:
+----+------+--------+------------------+
| Id | Name | School | Number |
+----+------+--------+------------------+
| 1 | ABC | A | 33,3333333333333 |
| 1 | ABC | B | 33,3333333333333 |
| 1 | ABC | C | 33,3333333333333 |
+----+------+--------+------------------+