【发布时间】:2011-07-21 04:56:40
【问题描述】:
使用 WITH 子句时出现此错误
关键字“with”附近的语法不正确。如果这个语句是 公共表表达式、xmlnamespaces 子句或更改跟踪 上下文子句,前一条语句必须以 分号。
消息 102,级别 15,状态 1,过程 ViewComplaintbyProfile,第 29 行
',' 附近的语法不正确。
这是我的程序
ALTER PROCEDURE [dbo].[ViewComplaintbyProfile]
( @ID int
)
AS
BEGIN
SET NOCOUNT ON
WITH
one as
(Select sno = ROW_NUMBER()OVER (order by complaint_id), Complaint_Id, ComplainantName,ComplaintType_id, complaintProfileId,ComplainantProfileId,Description,
Email, Date_Complained, Status, AdminComments, Phone, Evidence,
PLevel = CASE PriorityLevel_id WHEN '1' THEN 'High'
WHEN '2' THEN 'Medium'
WHEN '3' THEN 'Low' END ,
Complaint_Type = CASE ComplaintType_ID WHEN '1' THEN 'Purchased Contact has incorrect details'
WHEN '2' THEN 'Contacted Profile is already married'
WHEN '3' THEN 'Suspect the Profile has fradudelent contect/credentials'
WHEN '4' THEN 'Suspect the Profile has fake picture'
WHEN '5' THEN 'Profile has obscene or inappropriate content'
WHEN '6' THEN 'Report harassment, offensive remarks, etc., by user'
WHEN '7' THEN 'Miscellaneous issue' END,
Status1 = CASE Status WHEN 'New' THEN 1
WHEN 'In-Progress' THEN 2
WHEN 'Closed' THEN 3
END
from Complaints),
two as
(SELECT sno = ROW_NUMBER()OVER (order by complaint_id), Complaint.complaintProfileId,
CASE
WHEN cast(mmbProfiles.MMB_Id as varchar) IS NOT NULL THEN cast(mmbProfiles.MMB_Id as varchar)
WHEN cast(UPPMembership.profile_id as varchar) IS NOT NULL THEN 'UPP'
ELSE 'Not found'
END as MMBId
FROM Complaints Complaint
LEFT JOIN MMBMembership
ON MMBMembership.profile_id = Complaint.complaintProfileId
left JOIN MMB_BusinessProfiles mmbProfiles
ON mmbProfiles.MMB_id = MMBMembership.MMB_id
LEFT JOIN UPPMembership
ON UPPMembership.profile_id = Complaint.complaintProfileId)
SELECT one.*,two.MMBId FROM one join two
on one.sno = two.sno
WHERE (ComplaintType_id = @ID)
END
请帮忙
谢谢 孙
【问题讨论】:
-
请养成正确终止 T-SQL 中所有适用语句的习惯。越来越多的关键字要求前面的语句以分号结束。几年来,我一直在宣扬这是一种最佳实践,希望它会开始流行起来。 sqlblog.com/blogs/aaron_bertrand/archive/2011/07/12/…
-
另外,请指定和/或标记您正在使用的 SQL Server 版本。虽然从错误消息中可以清楚地看出您使用的是 2005 或更高版本,但让该信息更加明显总是有用的。
标签: sql sql-server