[英]SQL WITH in WITH
我想用SQL查询编写一个with。
出错了。 请帮忙:
DECLARE @Start AS DATETIME;
DECLARE @End AS DATETIME;
SET @Start = '2013-04-09';
SET @End = '2013-04-11';
with View_Solidnet_Training as
(
with View_Solidnet_Training as
(
select cast(@Start as datetime) DateValue
union all
select DateValue + 1
from View_Solidnet_Training
where DateValue + 1 <= cast(@End as datetime)
)
insert into OBJ_Availability
select 34, DateValue, 'AM', 2, 'Test' from View_Solidnet_Training;
)
select * from View_Solidnet_Training where PK_Training_ID is not null;
错误:
消息156,第15层,州1,第7行
关键字“ with”附近的语法不正确。
消息319,第15级,州1,第7行
关键字“ with”附近的语法不正确。 如果此语句是公用表表达式或xmlnamespaces子句,则前一条语句必须以分号终止。
Msg 102,第15级,状态1,第17行
')'附近的语法不正确。
尝试这个。 这只是示例代码。 在此代码中,将CTE与CTE一起编写。
;with CTE1 as (
SELECT Patientid
,Lastname1
,age
,dob
,ROW_NUMBER() OVER (ORDER BY Patientid DESC) AS RowNumber
FROM PTN_PATIENT
)
,CTE2 AS (
SELECT CTE1.Patientid
,CTE1.Lastname1
,CTE1.age
,CTE1.dob
,CTE1.RowNumber
,DATEDIFF(YEAR,CTE1.dob,GETDATE()) as yearOfservce
FROM Lab_LabDiagOrder INNER JOIN CTE1
ON Lab_LabDiagOrder.Patientid = CTE1.Patientid
WHERE CTE1.RowNumber between 1 and 5
)
SELECT * FROM CTE2;
您不能在CTE(公用表表达式)中包含DECLARE
和SET
。
DECLARE @Start AS DATETIME;
DECLARE @End AS DATETIME;
SET @Start = '2013-04-09';
SET @End = '2013-04-11';
;WITH View_Solidnet_Training AS
(
SELECT @Start AS DateValue
UNION ALL
SELECT DateValue + 1
FROM View_Solidnet_Training
WHERE DateValue + 1 <= @End
)
SELECT
34, DateValue, 'AM', 2, 'Test'
FROM
View_Solidnet_Training
-- WHERE
-- PK_Training_ID IS NOT NULL
我不知道PK_Training_ID
应该来自哪里-在您的代码中找不到它。
笔记:
DECLARE
和SET
只能是SELECT
和UNION ALL
@Start
和@End
已经被声明为DATETIME
将它们再次强制转换为DATETIME
绝对没有意义。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.