【发布时间】:2021-07-13 19:31:23
【问题描述】:
以下在 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
【问题讨论】:
-
我确信有一种更简单的方法来编写查询。您应该解释您希望查询执行的操作。样本数据和期望的结果也有帮助。
-
你真的应该重新开始。 DISTINCT 的多次使用有一种难闻的气味,使用没有 ORDER BY 子句的 TOP 10 是一个逻辑缺陷。您的架构看起来非常可疑,非常非常具体的列(other_product_id 和 Pizza_product_id)表明存在规范化问题。最后,最终查询从 mostsold 中选择前 10 行 - 但 cte 已经限制为 10 行。即使您的查询在不同的工具中“有效”,也不太可能为您提供正确或一致的结果。
标签: sql sql-server powerbi