簡體   English   中英

在pentaho數據集成上查詢sql錯誤(子查詢)

[英]query sql error on pentaho data integration (subquery)

這是我的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}
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_product ,所以我將做fo.sk_product = p.sk_product 此外,在SELECT具有p.Product_Name ,但它不在GROUP BY子句中。 如果要在行中獲取產品名稱, p.product_nameGROUP BY fo.sk_product p.product_name替換為p.product_name ,或者如果要獲取替代鍵而不是產品名稱,請在以下位置將p.Product_Name替換為p.sk_product SELECT子句。

您必須認為要通過product_name獲得產品,此列必須為UNIQUE。

查詢將是這樣的(通過sk_productsk_product作為參數獲取):

  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 

或這樣(如果product_name對於每個sk_product為UNIQUE,則按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 p.product_name = ${product_name}
GROUP BY fo.sk_product, d.year4
LIMIT 0,2000 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM