Sql server 正在尝试联接6个表

Sql server 正在尝试联接6个表,sql-server,join,Sql Server,Join,我可能在尝试一些过于雄心勃勃的事情,但无论如何我都在尝试:我正在尝试加入6个不同的表格。下面是SQL语句 SELECT AF.[Product Number], AF.[Week End Date], AF.[Inv Change Cost], AF.[Gross Sales Lbs], AF.[Production Lbs], ACO.CO2, ACO.Oil, MC.[Actual Usage Cost], SC.[Actual Usage Cost], AP.[Dire

我可能在尝试一些过于雄心勃勃的事情,但无论如何我都在尝试:我正在尝试加入6个不同的表格。下面是SQL语句

SELECT 
AF.[Product Number], 
AF.[Week End Date], 
AF.[Inv Change Cost], 
AF.[Gross Sales Lbs], 
AF.[Production Lbs], 
ACO.CO2, 
ACO.Oil, 
MC.[Actual Usage Cost], 
SC.[Actual Usage Cost], 
AP.[Direct Lab Wkly Cst] * (1 +(AP.[Fringes Wkly Cst] / (AP.[Direct Lab Wkly Cst] + AP.[Indirect Lab Wkly Cst]))) AS DirecLaborCost, 
AP.[Indirect Lab Wkly Cst] * (1 +(AP.[Fringes Wkly Cst] / (AP.[Direct Lab Wkly Cst] + AP.[Indirect Lab Wkly Cst]))) AS IndirectLaborCost, 
AP.[Variable Wkly Cst], 
AP.[Freezing Wkly Cst], 
AP.[Packaging Wkly Cst], 
AP.[Fixed Wkly Cst], 
AP.[Non Processing Wkly Cst], 
SP.[Direct Lab Wkly Cst], 
SP.[Indirect Lab Wkly Cst], 
AP.[Fringes Wkly Cst], 
SP.[Variable Wkly Cst], 
SP.[Freezing Wkly Cst], 
SP.[Packaging Wkly Cst], 
SP.[Fixed Wkly Cst], 
SP.[Non Processing Wkly Cst] 
FROM Table1 AF 
JOIN Table2 ACO ON AF.[Product Number] = ACO.[Product Number] 
JOIN Table3 MC ON MC.[Product Number] = ACO.[Product Number] 
JOIN Table4 SC ON SC.[Product Number] = MC.[Product Number] 
JOIN Table5 AP ON AP.[Product Num] = SC.[Product Number] 
JOIN Table6 SP ON SP.[Product Num] = AP.[Product Num] 
WHERE (AF.[Week End Date] = '2/4/2017');
我当前收到一个SQL超时错误。是语句太长,还是我犯了语法错误

编辑:

我发现,由于记录的数量太多,我得到了一个超时时间。我已使用以下查询将查询范围缩小到16条记录:

SELECT
AF.[Product Number],
AF.[Week End Date],
AF.[Inv Change Cost],
AF.[Gross Sales Lbs],
AF.[Production Lbs],
MC.[Actual Usage Cost] AS MeatCost,
SC.[Actual Usage Cost] AS SeasoningCost,
ACO.[CO2],
ACO.[Oil],
AP.[Direct Lab Wkly Cst],
AP.[Indirect Lab Wkly Cst],
AP.[Fringes Wkly Cst],
AP.[Variable Wkly Cst],
AP.[Freezing Wkly Cst],
AP.[Packaging Wkly Cst],
AP.[Fixed Wkly Cst],
AP.[Non Processing Wkly Cst],
SP.[Direct Lab Wkly Cst],
SP.[Indirect Lab Wkly Cst],
SP.[Fringes Wkly Cst],
SP.[Variable Wkly Cst],
SP.[Freezing Wkly Cst],
SP.[Packaging Wkly Cst],
SP.[Fixed Wkly Cst],
SP.[Non Processing Wkly Cst]
FROM Table1 AF
FULL JOIN Table2 MC ON MC.[Week Ending Date] = AF.[Week End Date] AND MC.[Product Number] = AF.[Product Number]
FULL JOIN Table3 SC ON SC.[Week Ending Date] = AF.[Week End Date] AND SC.[Product Number] = AF.[Product Number]
FULL JOIN Table4 ACO ON ACO.[Product Number] = AF.[Product Number] AND ACO.[Week Ending Date] = AF.[Week End Date]
FULL JOIN Table5 AP ON AP.[Product Num] = AF.[Product Number] AND AP.[Week Ending Date] = AF.[Week End Date]
FULL JOIN Table6 SP ON SP.[Product Num] = AF.[Product Number] AND SP.[Week Ending Date] = AF.[Week End Date]
WHERE (AF.[Product Number] = '96443' AND AF.[Week End Date] = '2/4/2017' AND 
MC.[Rout Line Name] = 'Total Cost' AND SC.[Rout Line Name] = 'Total Cost')
正如我之前所说的,我已经将这一点缩小到16行,但我想获得完整的1行记录


我相信现在发生的事情是MC、SC、AP和SP都返回了两条记录,但我不知道如何将这些值相加,使它们都在一行中

你在
AP.[间接实验室工作Cst]
后缺少一个星号吗?我真的看到了!谢谢这个问题解决了!但现在我仍然得到超时错误。我的语句太长了吗?我打赌你只需加入
[Product Num]
就可以得到很多行。为什么你要将日期存储为字符串?如果它太慢,你需要查看执行计划以确定它慢的原因。它可能是一打或更多的东西。缺少/较差的索引、陈旧的统计信息、隐式数据类型转换…等等。。。。你能发布实际的执行计划,而不是估计的吗?您必须在SSMS中运行它,因为超时是应用程序的症状,数据库将运行查询,直到得到结果。