在SQL Server中使用内部联接时如何排除无关数据?
我手头有两张桌子。 表A包含销售日期、水果类型、销售数量和总价。 表B列出了不同时期不同类型水果的单价 表A:在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
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中,则将取消销售。