根据其他行中的值计算值

问题描述 投票:0回答:1

我正在尝试根据是否有多行满足条件来划分一列的值。对于此示例,所有书籍都有一位“主要”作者,该作者将始终获得满分。书籍也可以有一个或多个“第二”作者,如果一本书有多个第二作者,则分数在第二作者之间平均分配。]

所需的输出是使最后一列为'NewPoints'示例:

书1的点值为1,只有一位第二作者,因此,第二作者获得了完整的1点值。

第二本书的得分值为1,并且有两个第二作者,因此,第二作者的得分均为0.5。

第三本书的得分值为0.5,并且有三位第二作者,因此,第二作者的得分均为0.16。

Select
b.BookID,
b.BookName,
bd.points,
a.AuthorName,
a.AuthorType,


From Book as b

LEFT JOIN bookdetails as bd
ON b.BookID = bd.BookID_FK

LEFT JOIN authors as a
ON bd.AuthorBookID = a.AuthorBookID
BookID | BookName      |Points|AuthorName   |Author Type | NewPoints

1      | Ocean's 11    |  1   | James Smith | Primary    |   1

1      | Ocean's 11    |  1   | Linus Key   | Secondary  |   1

2      | Number Two    |  1   | Jason Pitt  | Primary    |   1

2      | Number Two    |  1   | Will Franks | Secondary  |   0.5

2      | Number Two    |  1   | Donald Pe   | Secondary  |   0.5

3      | Cactus Jack   | 0.5  | Brad Saul   | Primary    |   0.5

3      | Cactus Jack   | 0.5  | Will Franks | Secondary  |   0.16

3      | Cactus Jack   | 0.5  | Linus Key   | Secondary  |   0.16

3      | Cactus Jack   | 0.5  | George Bray | Secondary  |   0.16

我正在尝试根据是否有多行满足条件来划分一列的值。对于此示例,所有书籍都有一位“主要”作者,该作者将始终获得完整的...

sql sql-server case
1个回答
0
投票

如果只有两种类型:

© www.soinside.com 2019 - 2024. All rights reserved.