Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在我的左连接中困惑_Sql_Ms Access - Fatal编程技术网

Sql 在我的左连接中困惑

Sql 在我的左连接中困惑,sql,ms-access,Sql,Ms Access,这件事让我绞尽脑汁,我认为它并没有我想象的那么具有挑战性。实际上,我试图做的是: 计算月平均销售额,同时排除适用于所有地区的假日类型1的天数(例如,对于特定地区,我可以将其更改为类型2) 选择年(日期)作为年,选择月(日期)作为月,选择平均(tblSales.Sales)作为平均销售 来自TBL销售 左加入TBLHOLIDES 关于tblSales。[Date]>=tblHolidays。[Date From]和tblSales。[Date]这才是你真正的意思 SELECT Year(Date)

这件事让我绞尽脑汁,我认为它并没有我想象的那么具有挑战性。实际上,我试图做的是:

计算月平均销售额,同时排除适用于所有地区的假日类型1的天数(例如,对于特定地区,我可以将其更改为类型2)

选择年(日期)作为年,选择月(日期)作为月,选择平均(tblSales.Sales)作为平均销售
来自TBL销售
左加入TBLHOLIDES

关于tblSales。[Date]>=tblHolidays。[Date From]和tblSales。[Date]这才是你真正的意思

SELECT Year(Date) AS Year, Month(Date) AS Month, Avg(tblSales.Sales) AS AvgSales
FROM tblSales
LEFT JOIN tblHolidays
     ON tblSales.[Date] >= tblHolidays.[Date From]
        AND tblSales.[Date] <= tblHolidays.[Date To]
        AND tblHolidays.[Type] = 1 AND tblHolidays.[Region] = "All"
WHERE tblHolidays.[Date From] Is Null
GROUP BY Year(Date), Month(Date);
选择年(日期)作为年,选择月(日期)作为月,选择平均(tblSales.Sales)作为平均销售
来自TBL销售
左加入TBLHOLIDES
在TBL销售上。[日期]>=TBL天数。[日期自]

和tblSales。[Date]首先,您需要正确地加入表“tblHolidays”和“tblSales”。给出之后的条件感谢您的回复-我之前尝试过这个方法,但在Access 2007中遇到一个错误,错误是:不支持连接表达式,它突出显示“tblHolidays.[Type]=1”。我想我找到了一个解决方案:您需要在“ON”之后添加括号
SELECT Year(Date) AS Year, Month(Date) AS Month, Avg(tblSales.Sales) AS AvgSales
FROM tblSales
LEFT JOIN tblHolidays
     ON tblSales.[Date] >= tblHolidays.[Date From]
        AND tblSales.[Date] <= tblHolidays.[Date To]
        AND tblHolidays.[Type] = 1 AND tblHolidays.[Region] = "All"
WHERE tblHolidays.[Date From] Is Null
GROUP BY Year(Date), Month(Date);