(SQL)选择包含添加详细级别的联接的查询

(SQL)选择包含添加详细级别的联接的查询,sql,sql-server,Sql,Sql Server,我熟悉基本连接,但我只使用它们来固定柱,而不是添加细节级别 假设我有表表A和表B(见下图)。以下是: “Key”代表一个人 “年龄”指的是人的年龄 “赚”的钱 已售出桶的“桶”类型 因此,在表a中,它显示了一个人在特定年龄段挣了多少钱表B显示了他们销售不同类型水桶所得收入的百分比分割——对于每个人,“分割”在所有水桶中加起来为100 考虑到这两个表,我如何查询每个人在不同年龄段和不同桶组合下的收入 谢谢 编辑: 没关系,我知道了。对于那些好奇的人: SELECT a.Masterke

我熟悉基本连接,但我只使用它们来固定柱,而不是添加细节级别

假设我有表表A表B(见下图)。以下是:

“Key”代表一个人

“年龄”指的是人的年龄

“赚”的钱

已售出桶的“桶”类型

因此,在表a中,它显示了一个人在特定年龄段挣了多少钱表B显示了他们销售不同类型水桶所得收入的百分比分割——对于每个人,“分割”在所有水桶中加起来为100

考虑到这两个表,我如何查询每个人在不同年龄段和不同桶组合下的收入

谢谢

编辑:

没关系,我知道了。对于那些好奇的人:

SELECT 
    a.Masterkey, 
    a.Age, 
    b.Bucket, 
    a.Earned * b.Split/100 AS Earned
FROM 
    TableA a INNER JOIN TableB b
ON
    a.Masterkey = b.Masterkey
ORDER BY 1,2,3

您可以在
SELECT
子句中进行数学运算。只需像平常一样加入表格,然后选择Enowned*SPLIT/100或类似的东西。

这应该可以满足您的需要:

declare @e table (pk nvarchar(2),Age int,Earned decimal(10,2));
declare @s table (pk nvarchar(2),Bucket nvarchar(1),Split decimal(10,2));

insert into @e values ('a1',6,10),('a1',7,20),('b1',14,50),('b1',15,100);
insert into @s values ('a1','A',25),('a1','B',75),('b1','A',50),('b1','B',50);

select e.pk
        ,e.Age
        ,s.Bucket
        ,e.Earned * (s.Split/100) as Earned
from @e e
    left join @s s
        on e.pk = s.pk;
输出:

+----+-----+--------+-------------+
| pk | Age | Bucket |   Earned    |
+----+-----+--------+-------------+
| a1 |   6 | A      |  2.50000000 |
| a1 |   6 | B      |  7.50000000 |
| a1 |   7 | A      |  5.00000000 |
| a1 |   7 | B      | 15.00000000 |
| b1 |  14 | A      | 25.00000000 |
| b1 |  14 | B      | 25.00000000 |
| b1 |  15 | A      | 50.00000000 |
| b1 |  15 | B      | 50.00000000 |
+----+-----+--------+-------------+

听起来确实像是家庭作业的问题。你试过什么?不是;这是一个与更大的表和更多列相关的工作。我简化了它,因为一旦我看到一个例子,我就可以根据我的情况调整它。@HarryTime以文本而不是图像的形式发布示例数据,并添加您迄今为止尝试过的内容