如何解决为什么我收到Microsoft SQL: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.[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可以组成其他critera并在运行时加入的查询。
如果您使用这样的查询创建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 Server中的视图,或将CTE子查询转换为嵌套子查询,但是该查询实际上太复杂了,无法在DirectQuery模型中使用。因此,您确实需要将结果加载到表中以使用DirectQuery,或者切换到“导入”并仅在刷新时运行查询。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。