在SQL Server中使用内部联接时如何排除无关数据?

在SQL Server中使用内部联接时如何排除无关数据?,sql,sql-server,tsql,Sql,Sql Server,Tsql,我手头有两张桌子。 表A包含销售日期、水果类型、销售数量和总价。 表B列出了不同时期不同类型水果的单价 表A: Sales_Date Fruit Quantity Total_Price 20200515 Apple 2 4 20200601 Apple 4 10 20200601 Banana 4 7.2 20200606 Orange

我手头有两张桌子。 表A包含销售日期、水果类型、销售数量和总价。 表B列出了不同时期不同类型水果的单价

表A:

Sales_Date    Fruit     Quantity  Total_Price
20200515      Apple        2          4 
20200601      Apple        4          10
20200601      Banana       4          7.2
20200606      Orange       6          7.8
表B:

Fruit      Valid_Price_From     Valid_Price_To     Unit_Price 
Apple         20200301            20200531          2.0
Banana        20200301            20200531          1.5
Orange        20200301            20200531          1.0
Apple         20200601            20200831          2.5
Banana        20200601            20200831          1.8
Orange        20200601            20200831          1.3
我需要形成一个表C,将销售相关信息与单价结合起来,该表在该期间内有效,并采用此格式

表C:

Sales_Date      Fruit      Quantity     Unit_Price    Total_Price
20200515        Apple         2             2             4 
20200601        Apple         4            2.5            10
20200601        Banana        4            1.8            7.2
20200606        Orange        6            1.3            7.8
我使用的第一个查询是

select A.Sales_Date, A.Fruit, A.Quantity, B.Unit_Price, A.Total Price
from table_A A 
inner join
table_B B on A.Fruit=B.Fruit
但是我在连接这两个表时出错了

我想这是因为每种水果都有两种类型的
单价
(在不同时期有效)。然后,我尝试将
销售日期
有效价格
有效价格

我使用的第二个查询是:

select A.Sales_Date, A.Fruit, A.Quantity, B.Unit_Price, A.Total Price
from table_A A 
inner join
table_B B on A.Fruit=B.Fruit
where A.Sales_Date > B.Valid_Price_From and A.Sales_Date < B.Valid_Price_To
选择A.销售日期、A.水果、A.数量、B.单价、A.总价
从表A
内连接
表A.Fruit=B.Fruit
其中,A.销售日期>B.有效价格从和A.销售日期
但它也不能正常工作


我可以知道如何构造内部联接查询以获得表C所示的所需输出吗?

您的查询中的日期比较不正确:

select A.Sales_Date, A.Fruit, A.Quantity, B.Unit_Price, A.Total_Price
from table_A A inner join
     table_B B
     on A.Fruit = B.Fruit and
        A.Sales_Date >= B.Valid_Price_From and 
        A.Sales_Date <= B.Valid_Price_To;
选择A.销售日期、A.水果、A.数量、B.单价、A.总价
来自表A的内部联接
表B
A.水果=B.水果和
A.销售日期>=B.有效价格来自和

A.Sales\u日期查看您的第二个查询看起来不错(你只需要
=
而不是
你的问号合适吗?我没有看到任何链接的服务器引用,也不清楚MySQL和Microsoft SQL server是否/如何相关。@GMB实际上我有两种销售价格计算方法,第一种是我提到的,第二种是使用另一种c计算方法没有像第一种方法那样使用任何定期价格。如果使用比较查询,我无法获得所需的输出。它将排除使用第二种方法获取总销售价格的销售,因为使用第二种方法的销售的有效价格和有效价格为空。否,我需要比较以获取r不包括单价,但如果销售日期未包含在表B中,则将取消销售。