繁体   English   中英

Power BI Microsoft SQL:“;”附近的语法不正确。 ')' 附近的语法不正确

[英]Power BI Microsoft SQL: Incorrect syntax near ';'. Incorrect syntax near ')'

以下在 DataGrip 中运行良好。 但是,在 Power BI 中,我收到此错误并且不知道为什么:

Microsoft SQL:“;”附近的语法不正确。 ')' 附近的语法不正确。

它给了我另一个 CTE 错误,我必须在开始时添加分号,但我似乎无法弄清楚。 语法看起来不错。

  ;WITH pizzaorder AS ( 
        SELECT DISTINCT [order].id 
        FROM [order]
        LEFT JOIN order_line 
        ON order_line.order_id = [order].id 
        WHERE pizza_product_id IS NOT NULL
    ),
    
    otherproductorder AS (
        SELECT DISTINCT [order].id 
        FROM [order]
        LEFT JOIN order_line ON order_line.order_id = [order].id 
        WHERE other_product_id IS NOT NULL
    ),
    
    mostsold AS (
        SELECT TOP 10 product_name,
        SUM(quantity) AS quantity 
        FROM pizzaorder
        INNER JOIN otherproductorder ON otherproductorder.id = pizzaorder.id 
        LEFT JOIN order_line ON order_line.order_id = pizzaorder.id 
        INNER JOIN product ON product.id = order_line.other_product_id 
        GROUP BY product_name
    )
    
    SELECT TOP 10 *
    FROM mostsold 
    ORDER BY quantity DESC

在许多情况下,Power BI 会将您提供的查询与其他查询组合在一起,方法是将其包装在子查询中。 这不适用于 CTE。

因此,您可以使用该逻辑创建视图,或将 CTE 转换为 FROM 子句中的子查询。

但通常在将数据公开给 Power BI 之前,您不应该进行这种查询工作。 在 Power BI 中,您通常将每个表单独引入 Power BI 数据集中。

我设法按照 SMor 建议的方式重新开始解决了这个问题。

它仍然不完美,数据库有一些缺陷,但这是适合我情况的解决方案。

SELECT TOP 10 product_name, SUM(quantity) AS quantity 
FROM (SELECT DISTINCT [order].id 
    FROM [order] 
    LEFT JOIN order_line ON order_line.order_id = [order].id 
     WHERE pizza_product_id IS NOT NULL) as pizzaorder 
LEFT JOIN order_line ON order_line.order_id = pizzaorder.id 
INNER JOIN product ON product.id = order_line.other_product_id 
GROUP BY product_name 
ORDER BY quantity DESC 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM