Microsoft SQL Server错误102
我正在执行下面的查询,它给了我Microsoft SQL Server错误102,sql,sql-server,tsql,Sql,Sql Server,Tsql,我正在执行下面的查询,它给了我 SELECT t1.s_reference "Section", t2.m_reference "CourseRef", t2.m_name "CourseName", t3.mi_q02m02 "Aim", t2.m_level "Level", t2.m_start "Start", t2.m_end "End", t2.m_projstudents "Target", COUNT(DISTINCT t4.e_id) "En
SELECT
t1.s_reference "Section",
t2.m_reference "CourseRef",
t2.m_name "CourseName",
t3.mi_q02m02 "Aim",
t2.m_level "Level",
t2.m_start "Start",
t2.m_end "End",
t2.m_projstudents "Target",
COUNT(DISTINCT t4.e_id) "Enrolled"
FROM
isr t3,
person t5,
department t6,
section t1,
enrolment t4,
course t2
WHERE
t3.mi_id(+)=t2.m_id
AND t4.e_module=t2.m_id
AND t4.e_student=t5.p_id
AND(t2.m_status LIKE '%%'||SUBSTR((TO_CHAR(sysdate,'YYYY')+DECODE(least(to_number(TO_CHAR(sysdate,'mm')),8),8,0,-1)),-2,2) ||'%%')
AND t2.m_reference LIKE 'LL%%'
AND t4.e_status IN('C','S')
AND to_date(t2.m_start,'DD-Mon-RRRR')<=to_date(sysdate,'DD-Mon-RRRR')
AND to_date(t2.m_end,'DD-Mon-RRRR')>=to_date(sysdate,'DD-Mon-RRRR')
AND t2.m_modulesection=t1.s_id
AND t2.m_moduledept=t6.d_id
AND NVL(t2.m_close,0)=0
AND t3.mi_q02m02 IS NOT NULL
AND((
CASE
WHEN((t1.s_reference='LL2a')
AND(t2.m_reference LIKE '%W%'))
THEN 1
ELSE 0
END)=0)
AND(t2.m_reference!='LL3036E15')
GROUP BY
t1.s_reference,
t2.m_reference,
t2.m_name,
t3.mi_q02m02,
t2.m_level,
t2.m_start,
t2.m_end,
t2.m_projstudents,
t1.s_reference,
t2.m_reference
ORDER BY
t1.s_reference,
t2.m_reference
我在sqldeveloper中运行了相同的查询,它运行得很好
我试图删除大部分括号,但仍然没有帮助。
知道为什么会这样吗
谢谢
Aruna您正在尝试在Microsoft的SQL Server中运行为Oracle编写的查询。这些产品使用稍微不同的SQL方言,这是不兼容的。例如,
DECODE
、NVL
、TO_CHAR
在SQL Server中不可用。您必须使用SQL Server函数重新编写查询,以替换Oracle特定的查询(CASE
,COALESCE
,CONVERT
,用于我提到的查询)。第一步。。。将所有| |替换为单词或
第二步
和(t2.m_)状态,如
“%%”SUBSTR((TO_CHAR(sysdate,'YYYY')+解码(least(TO_number(TO_CHAR(sysdate,'mm')),8),8,0,-1)),-2,2)
||“%%”)
在哪里
||“%%”)
不是限定条件,可能与您已使用的条件无关
第三
t3.mi_id(+)=t2.m_id
你必须重写这个
第四
%%
只能是%哪一行是问题行?(删除工作正常的代码,并保留尽可能小的问题查询。)(可能)与您的错误无关,但您应该切换到显式
join
语法,这是自1992年以来的标准!当然你会犯错误。您已经编写了Oracle代码,并且遇到了SQL Server错误。您应该使用SQL Server约定编写代码。将集中函数“| |”替换为“+”+,使用适当的JOIN
。SQL Server中甚至不存在您使用的函数。我将| |替换为或,但我得到了无效的关系运算符错误太多东西无法转换为SQL Server语法,如| char等。您需要重写它们。
Incorrect syntax near ')'. MS SQL Server Error 102