在SQL Server 2012中,我想从两个具有历史摘要信息的表中重新创建详细的销售交易记录,但似乎无法根据客户的开始日期限制记录。 (实际上有3个表,一个有客户项目类别和按类别划分的销售额百分比,但我没有遇到交叉连接的那部分问题)。任何帮助,将不胜感激。
想象一下两个表:
Customer ID Customername Sales_Monthly Date_start 1 Acme $80,000.00 1/15/2012 2 Universal $50,000.00 1/3/2013 3 SuperMart $12,000.00 4/14/2013
Calendar ID Date 1 1 /31/2014 2 2 /28/2014 3 3 /31/2014 4 4 /30/2014 5 5 /30/2014 6 6 /30/2014 7 7 /30/2014 8 8 /30/2014 9 9 /30/2014 10 10/30/2014 11 11/30/2014 12 12/30/2014
简单的交叉连接:
SELECT Calendar.Date, Customer.ID, Customer.Customername, Customer.Sales_2013
FROM Calendar, Customer
按照您的预期生成36个条目(3个客户x 12个月)
但是,我只想生成条目28个条目,其中[Calendar.Date]> [Customer.Date_start]
我似乎无法找到WHERE CLAUSE以及任何基于Customer.Date_start字段限制我的记录的连接类型或子查询。对此有何建议?
答案 0 :(得分:0)
如果您正在加入交叉联接中的某个字段,则它不再是交叉联接。假设您的问题中的客户数据不正确,并且您认为它是2014年的所有客户记录,您可以像这样进行加入。
SELECT *
FROM Customer a
JOIN Calendar b ON b.Date > a.Date_start
这产生了33行(客户1为12行,客户2为12行,客户3为9行,而不是像您期望的那样为28行),但希望我的回答能为您指明正确的方向。