我的查询在开头包含以下内容:
; With xxx as xxxxx
我无法使用语句创建视图,因此保留此声明至关重要。
编辑:这是代码:
; with numbered as (
Select part,taarich,hulia,mesirakabala,
rowno = row_number() OVER (Partition by parit order.by taarich)
From tblMK)
Select a.rowno-1,a.part, a.Julia,b.taarich,as.taarich_kabala,a.taarich, a.mesirakabala,getdatediff(b.taarich,a.taarich) as due
From numbered a
Left join numbered b ON b.parit=a.parit
And b.rowno = a.rowno - 1
Where b.taarich is not null
答案 0 :(得分:3)
将with
放在create view
声明之后:
create view t2 as
with t as (select 1 as col)
select * from t;
Here是一个SQL小提琴,显示了这个例子。
答案 1 :(得分:1)
我认为你的问题是领先的分号。删除它,然后再试一次。
在SQL中,行末尾的分号是可选的,通常省略。
然而,WITH语句要求先前的语句(如果存在)以分号结束。
由于大多数人都省略了分号,因此许多作者会将分号放在WITH的开头,因此它会关闭之前的任何语句。
如果您的WITH是定义视图的第一行,分号将尝试终止视图定义。
编辑:回应评论
这可能需要几次通过,但下一步是清理您的ROW_NUMBER列。替换你的
rowno = row_number()OVER(parit order.by taarich分区)
与
row_number()OVER(由taarich按部分顺序分区)为rowno
然后再试一次。 rowno =是一个赋值,rowno是一个别名,我很确定你真正想要的是什么。请注意,它是ORDER BY而不是ORDER.BY。检查“part”/“parit”的拼写是否是相同的字段拼写不同或有效?
清理它们,看看它是否在其他任何东西上窒息。