为什么我收到 Microsoft SQL: Power BI 语法错误?
Why I am getting Microsoft SQL: Incorrect syntax error on Power BI?
我正在尝试使用 CTE 获取一些数据,但出现错误提示我必须使用分号。我想我通过放置 ; 解决了这个问题在 WITH 前面,但现在我得到 Microsoft SQL: Incorrect syntax near ';'. Incorrect syntax near ')'.
谁能告诉我哪里出了问题?过去非常简单,只需将查询从 MS SQL 复制到 Power BI。我的查询在 MS SQL 中运行良好。
;WITH unit AS (
SELECT
tm.create_date
, tm.timeslip_date
, cases.case_sk
, cases.case_number
, cases.closed_ind
, cases.atty2_sk
, vc.atty2_name AS [Business Leader]
, em.smtp_reply_to AS [Business Leader Email]
, cases.atty1_sk
, vc.atty1_name AS [Assign Attorney]
, tm.detail_notes
FROM dbo.cases
LEFT JOIN dbo.vcases vc ON cases.case_sk = vc.case_sk
LEFT JOIN dbo.employee em ON cases.atty2_sk = em.employee_sk
LEFT JOIN dbo.timeslips tm ON cases.case_sk = tm.case_sk
WHERE cases.closed_ind = 'O'
AND NOT EXISTS(SELECT * FROM dbo.timeslips tsm WHERE tsm.case_sk = cases.case_sk AND tsm.timeslip_date > DATEADD(day, -90, GETDATE()) )
), agg AS (
SELECT
MIN(u.create_date) AS [Created Date]
, MAX(u.timeslip_date) AS [Last Bill Date]
, u.case_sk
, u.case_number
, u.closed_ind
, u.atty2_sk
, u.[Business Leader]
, u.[Business Leader Email]
, u.atty1_sk
, u.[Assign Attorney]
FROM unit u
GROUP BY
u.case_sk
, u.case_number
, u.closed_ind
, u.atty2_sk
, u.[Business Leader]
, u.[Business Leader Email]
, u.atty1_sk
, u.[Assign Attorney]
)
SELECT agg.*, unit.detail_notes
FROM agg
INNER JOIN unit
ON agg.[Last Bill Date] = unit.[timeslip_date]
AND agg.case_sk = unit.case_sk
AND agg.case_number = unit.case_number
AND agg.closed_ind = unit.closed_ind
AND agg.atty2_sk = unit.atty2_sk
AND agg.atty1_sk = unit.atty1_sk
谢谢
当您使用自定义查询作为 DirectQuery 源时,您必须提供一个查询,PowerBI 可以在 运行 时组成额外的条件并加入。
如果您使用这样的查询创建 DirectQuery 源
with q as (select * from sys.objects) select * from q
PowerBI 将编写如下查询
select * from (
with q as (select * from sys.objects) select * from q
) SourceQuery where 1 = 2
你得到的错误与你是否有语句终止符无关。 ;
不允许出现在查询中间,但 with
是不允许的。 CTE 很棒,但它们有一个缺陷:它们不是“可组合的”。
您可以通过在 SQL 服务器中将查询作为视图安装,或将 CTE 子查询转换为嵌套子查询来解决此问题,但该查询确实太复杂了,无法在 DirectQuery 模型中使用。因此,您确实需要将结果加载到 table 中才能使用 DirectQuery,或者切换到导入并 运行 仅在刷新时查询。
我正在尝试使用 CTE 获取一些数据,但出现错误提示我必须使用分号。我想我通过放置 ; 解决了这个问题在 WITH 前面,但现在我得到 Microsoft SQL: Incorrect syntax near ';'. Incorrect syntax near ')'.
谁能告诉我哪里出了问题?过去非常简单,只需将查询从 MS SQL 复制到 Power BI。我的查询在 MS SQL 中运行良好。
;WITH unit AS (
SELECT
tm.create_date
, tm.timeslip_date
, cases.case_sk
, cases.case_number
, cases.closed_ind
, cases.atty2_sk
, vc.atty2_name AS [Business Leader]
, em.smtp_reply_to AS [Business Leader Email]
, cases.atty1_sk
, vc.atty1_name AS [Assign Attorney]
, tm.detail_notes
FROM dbo.cases
LEFT JOIN dbo.vcases vc ON cases.case_sk = vc.case_sk
LEFT JOIN dbo.employee em ON cases.atty2_sk = em.employee_sk
LEFT JOIN dbo.timeslips tm ON cases.case_sk = tm.case_sk
WHERE cases.closed_ind = 'O'
AND NOT EXISTS(SELECT * FROM dbo.timeslips tsm WHERE tsm.case_sk = cases.case_sk AND tsm.timeslip_date > DATEADD(day, -90, GETDATE()) )
), agg AS (
SELECT
MIN(u.create_date) AS [Created Date]
, MAX(u.timeslip_date) AS [Last Bill Date]
, u.case_sk
, u.case_number
, u.closed_ind
, u.atty2_sk
, u.[Business Leader]
, u.[Business Leader Email]
, u.atty1_sk
, u.[Assign Attorney]
FROM unit u
GROUP BY
u.case_sk
, u.case_number
, u.closed_ind
, u.atty2_sk
, u.[Business Leader]
, u.[Business Leader Email]
, u.atty1_sk
, u.[Assign Attorney]
)
SELECT agg.*, unit.detail_notes
FROM agg
INNER JOIN unit
ON agg.[Last Bill Date] = unit.[timeslip_date]
AND agg.case_sk = unit.case_sk
AND agg.case_number = unit.case_number
AND agg.closed_ind = unit.closed_ind
AND agg.atty2_sk = unit.atty2_sk
AND agg.atty1_sk = unit.atty1_sk
谢谢
当您使用自定义查询作为 DirectQuery 源时,您必须提供一个查询,PowerBI 可以在 运行 时组成额外的条件并加入。
如果您使用这样的查询创建 DirectQuery 源
with q as (select * from sys.objects) select * from q
PowerBI 将编写如下查询
select * from (
with q as (select * from sys.objects) select * from q
) SourceQuery where 1 = 2
你得到的错误与你是否有语句终止符无关。 ;
不允许出现在查询中间,但 with
是不允许的。 CTE 很棒,但它们有一个缺陷:它们不是“可组合的”。
您可以通过在 SQL 服务器中将查询作为视图安装,或将 CTE 子查询转换为嵌套子查询来解决此问题,但该查询确实太复杂了,无法在 DirectQuery 模型中使用。因此,您确实需要将结果加载到 table 中才能使用 DirectQuery,或者切换到导入并 运行 仅在刷新时查询。