Mysql pentaho数据集成(子查询)上的查询sql错误
这是我的sql查询Mysql pentaho数据集成(子查询)上的查询sql错误,mysql,pentaho,Mysql,Pentaho,这是我的sql查询 SELECT p.Product_Name, d.year4 COUNT (fact_order.sk_product) FROM (SELECT * FROM fact_order limit 0,5000) fo , product p , dim_date d WHERE fo.sk_product = p.sk_product and fo.sk_order_date = d.date_key and fo.sk_product = ${product_name}
SELECT
p.Product_Name, d.year4
COUNT (fact_order.sk_product)
FROM
(SELECT * FROM fact_order limit 0,5000) fo , product p , dim_date d
WHERE fo.sk_product = p.sk_product and fo.sk_order_date = d.date_key and fo.sk_product = ${product_name}
GROUP BY fo.sk_product, d.year4
LIMIT 0,2000
我希望展示基于产品的年数试试看
SELECT p.Product_Name, d.year4, COUNT(fo.sk_product)
FROM (SELECT * FROM fact_order limit 0, 5000) fo, product p, dim_date d
WHERE fo.sk_product = p.sk_product
and fo.sk_order_date = d.date_key
and fo.sk_product = ${product_name}
GROUP BY fo.sk_product, d.year4,p.Product_Name LIMIT 0, 2000
您的查询缺少,:
SELECT
p.Product_Name, d.year4,COUNT (fact_order.sk_product)
FROM
(SELECT * FROM fact_order limit 0,5000) fo , product p , dim_date d
WHERE fo.sk_product = p.sk_product and fo.sk_order_date = d.date_key and fo.sk_product = ${product_name}
GROUP BY fo.sk_product, d.year4
LIMIT 0,2000
我认为错误在子句
WHERE
中。您正在执行fo.sk_product=${product_name}
。
如果我没有错,您应该将sk_product
(我猜它是一个整数)与另一个进行比较
sk_product
,而不是带有product_name
(它是一个字符串)
在事实表中,您有sk_产品
,我会做fo.sk_产品=p.sk_产品
。
此外,在您的选择中,您有p.Product\u Name
,但它不在GROUP BY
子句中。如果要获取行中的产品名称,请在GROUP BY
中将fo.sk_product
替换为p.product_name
,或者如果要获取代理键而不是产品名称,请在SELECT
子句中将p.sk_product
替换为p.sk_product
您必须认为,要通过product\u name
获取产品,此列必须是唯一的
查询如下所示(通过sk_product
和sk_product
作为参数获取):
或者像这样(如果每个sk_产品的产品名称都是唯一的,则按产品名称获取):
SELECT
p.sk_product, d.year4, COUNT(fact_order.sk_product)
FROM
(SELECT * FROM fact_order limit 0,5000) fo, product p , dim_date d
WHERE fo.sk_product = p.sk_product and fo.sk_order_date = d.date_key and fo.sk_product = ${sk_product_parameter}
GROUP BY p.sk_product, d.year4
LIMIT 0,2000
SELECT
p.Product_Name, d.year4
COUNT (fact_order.sk_product)
FROM
(SELECT * FROM fact_order limit 0,5000) fo , product p , dim_date d
WHERE fo.sk_product = p.sk_product and fo.sk_order_date = d.date_key and p.product_name = ${product_name}
GROUP BY fo.sk_product, d.year4
LIMIT 0,2000