我对SQL和Access相当新,所以我想做的事情可能非常简单,也可能不像我打算这样做。
我已经查询了按地区和日期(月份和年份)列出所有销售的产品(包括价值和数量)。如果产品已售出,我希望查询返回该特定产品和地区的全年12个月。这一切都有效。但是,我想通过排除产品销售的所有条目来限制我的查询,并且#34; 0"在任何特定产品和地区的一年内。
示例:如果某个产品尚未在特定区域内销售,则在特定年份内,该查询不应返回该年度产品和区域的任何条目。这可能吗?
在下面的代码中,NationalCode = product,RegionCode = Region。我希望其他一切都应该是不言自明的。 :)
我认为解决方案需要一个WHERE语句,我已经包含了一个只返回" 0"之上的值的子句。但这也删除了任何0的月份,如果在某一年内有销售,我希望保留几个月没有销售。
我希望以上是有道理的。谢谢!
SELECT IIf(isnull(sum(MonthlyData.[Sales
Value])),0,(sum(MonthlyData.[Sales Value])/1000)) AS [Value],
IIf(isnull(sum(MonthlyData.[Sales Units])),0,sum(MonthlyData.[Sales
Units])) AS Volume, [02-Query-Filter].RegionCode,
[02-Query-Filter].NationalCode, [02-Query-Filter].Year, [02-Query-Filter].RawMonth
FROM [02-Query-Filter]
LEFT JOIN MonthlyData
ON ([02-Query-Filter].RegionCode=Left(MonthlyData.Region,2)) AND
([02-Query-Filter].NationalCode=MonthlyData.[Nordic Code]) AND
([02-Query-Filter].RawMonth=MonthlyData.Month)
WHERE MonthlyData.[Sales Value]>0
GROUP BY [02-Query-Filter].RegionCode,
[02-Query-Filter].NationalCode, [02-Query-Filter].Year, [02-Query-Filter].RawMonth
答案 0 :(得分:0)
您创建一个子查询,选择所有产品,地区和所有年份(根据需要总结),并排除总和为0的组合。调用此X.
然后创建另一个查询,返回所有产品,区域和所有年/月,同时保持年和月字段(或至少年份字段)分开。组合。叫这个Y.
创建另一个查询Z,选择Y中的所有记录,这些记录可以在产品,地区和年份内部连接到X.
如果我理解了原始问题,查询Z将为您提供所需的数据。