【发布时间】:2020-09-23 23:58:57
【问题描述】:
我正在尝试运行以下 SQL 查询
WITH Tap AS (SELECT DISTINCT
account_id,
MONTH(t_start) AS month,
DAY(t_start) AS day
FROM knowledge_repeat)
SELECT DISTINCT
account_id,
COUNT(account_id) as 'Unique',
CASE
WHEN COUNT(account_id) > 10 THEN 'Super Loyal'
WHEN COUNT(account_id) > 5 AND COUNT(account_id) < 10 THEN 'Semi Loyal'
WHEN COUNT(account_id) > 2 AND COUNT(account_id) < 5 THEN 'Tried It'
WHEN COUNT(account_id) = 1 THEN 'Tried it once'
ELSE 'Crazy Keen'
END AS 'Loyalty Rating'
FROM Tap
GROUP BY account_id
但是得到以下错误
[MySQL][ODBC 8.0(w) Driver][mysqld-5.7.25-google-log]你有一个错误 在您的 SQL 语法中;检查与您的 MySQL 对应的手册 服务器版本,以便在 'Tap AS (SELECT DISTINCT account_id, MONTH(t_start) AS month, DAY(t_start) AS' at line 1 初始 SQL 错误。检查语法是否正确,并且您 有权访问所请求的数据库。
我不明白为什么 - 它在 SSMS 中运行良好,在我读过的各种论坛上,CTE 查询应该在 Tableau 的初始 SQL 部分中运行。
任何帮助表示赞赏!
【问题讨论】:
-
如果上面的链接没有回答您的问题,请说明您是如何在 Tableau 中运行该 cte 的,以及您在什么时候收到错误。另外,什么版本的 Tableau?
-
您的错误显示“mysqld-5.7.25-google-log”...此代码仅适用于 MySQL 8,不适用于较低版本
-
你做事很辛苦。尝试仅将 Tableau 指向原始表 Knowledge_repeat,而不是使用自定义 SQL。如果您详细了解 Tableau 的工作原理,您可以让它根据您想要的视图为您生成优化的 SQL。您将完成更多、更快、更灵活。很少需要自定义 SQL。否则,您将放弃 Tableau 带来的主要优势之一,而仅将其用作绘图工具。有一个学习曲线,一开始很难相信它会生成 SQL,但你的 SQL 概念知识仍然值得。非常值得花时间学习。
-
@AlexBlakemore 您是否建议我只要将 Tableau 中的计算字段指向原始表格,就应该能够做到这一点?
标签: mysql sql count tableau-api common-table-expression