我试图在两个表上进行联接,并根据我的select语句中没有的值进行过滤。
以下查询不起作用。
select b.[[Product]].[Major Category]]] ,sum(a.BIC_ZCDP) from TEMP_FORECAST_ALL a
join OUT_Dimension_DP_Product b
on right(a.MATERIAL,10) = b.[[Product]].[10D]]]
join OUT_Dimension_DP_Market c
on a.BIC_ZRMARKET = c.[[Market]].[Market]]]
group by b.[[Product]].[Major Category]]]
having a.CALMONTH in ('201810','201811','201812') and c.[[Market]].[Region]]] = 'UK'
我收到以下错误
信息8121,第16级,状态1,第7行 列'TEMP_FORECAST_ALL.CALMONTH'在HAVING子句中无效,因为它不包含在聚合函数或GROUP BY子句中。
信息8121,第16级,状态1,第7行 列'TEMP_FORECAST_ALL.CALMONTH'在HAVING子句中无效,因为它不包含在聚合函数或GROUP BY子句中。
信息8121,第16级,状态1,第7行 列'TEMP_FORECAST_ALL.CALMONTH'在HAVING子句中无效,因为它不包含在聚合函数或GROUP BY子句中。
信息8121,第16级,状态1,第7行 列'OUT_Dimension_DP_Market。[Market]。[Region]'在HAVING子句中无效,因为它既不在聚合函数中也不在GROUP BY子句中。
我不想在group by子句中添加Region和CALMONTH。
答案 0 :(得分:0)
使用WHERE
子句。 。 。 :
select p.[[Product]].[Major Category]]], sum(a.BIC_ZCDP)
from TEMP_FORECAST_ALL a join
OUT_Dimension_DP_Product p
on right(a.MATERIAL,10) = b.[[Product]].[10D]]] join
OUT_Dimension_DP_Market m
on a.BIC_ZRMARKET = m.[[Market]].[Market]]]
where a.CALMONTH in ('201810', '201811', '201812') and
m.[[Market]].[Region]]] = 'UK'
group by p.[[Product]].[Major Category]]];
答案 1 :(得分:0)
dataframe %>%
missing_pairs(dependent, explanatory)
仅适用于汇总。由于这只是简单的比较,因此您需要在having
子句中进行比较。例如,如果您要与where
或其他汇总进行比较,则可以使用having
。
答案 2 :(得分:0)
具有子句,但是这里您只是在进行比较,因此必须使用 where 子句。
答案 3 :(得分:0)
在对聚合数据进行过滤时,即,如果您要对SUM语句的结果进行过滤,则使用HAVING子句,如下所示:
HAVING SUM(a.BIC_ZCDP) > 0
但是,出于查询目的,您只需要将HAVING
切换为WHERE
,这样...
SELECT
b.[[Product]].[Major Category]]],
SUM(a.BIC_ZCDP)
FROM
TEMP_FORECAST_ALL a
INNER JOIN OUT_Dimension_DP_Product b ON right(a.MATERIAL,10) = b.[[Product]].[10D]]]
INNER JOIN OUT_Dimension_DP_Market c ON a.BIC_ZRMARKET = c.[[Market]].[Market]]]
WHERE
(a.CALMONTH IN ('201810','201811','201812')) AND (c.[[Market]].[Region]]] = 'UK')
GROUP BY
b.[[Product]].[Major Category]]]
同样,HAVING
子句允许您过滤已经AGGREGATED (SUM, MAX, MIN, etc.)
的字段,而WHERE
子句允许您过滤普通字段。