读书人

一条Oracle话语报错了求大侠们改下

发布时间: 2013-03-26 09:54:34 作者: rapoo

一条Oracle语句,报错了,求大侠们改下。。。
SELECT S.NO 学号,
CASE
WHEN S.ID = '1210527501' THEN
(SELECT DATE
FROM STU
WHERE ID = '1210527501') AS 时间1,
WHEN S.ID = '1210527502' THEN
(SELECT DATE
FROM STU
WHERE ID = '1210527502') AS 时间2,
WHEN S.ID = '1210527503' THEN
(SELECT DATE
FROM STU
WHERE ID = '1210527503') AS 时间3,
ELSE
END
FROM STU S
WHERE S.NO LIKE '1240156742010%';


报红色部分缺失关键字。。。

[解决办法]
法了吧一条Oracle话语,报错了,求大侠们改下。

你想表的是吧:

SELECT S.NO 学号,
(SELECT TOP 1 DATE
FROM STU
WHERE ID = S.ID AND S.ID = '1210527501') AS 时间1,
(SELECT TOP 1 DATE
FROM STU
WHERE ID = S.ID AND S.ID = '1210527502') AS 时间2,
(SELECT TOP 1 DATE
FROM STU
WHERE ID = S.ID AND S.ID = '1210527503') AS 时间3
FROM STU S
WHERE S.NO LIKE '1240156742010%';


又或者:
SELECT S.NO 学号,
CASE
WHEN S.ID = '1210527501' THEN
(SELECT TOP 1 DATE
FROM STU
WHERE ID = '1210527501')
WHEN S.ID = '1210527502' THEN


(SELECT TOP 1 DATE
FROM STU
WHERE ID = '1210527502')
WHEN S.ID = '1210527503' THEN
(SELECT TOP 1 DATE
FROM STU
WHERE ID = '1210527503') AS 时间
ELSE
END
FROM STU S
WHERE S.NO LIKE '1240156742010%';


[解决办法]
引用:
引用:法了吧

你想表的是吧:
SQL code?123456789101112SELECT S.NO 学号, (SELECT TOP 1 DATE FROM STU WHERE ID = S.ID AND S.ID = '1210527501'……


--case when ... else ... end 是一个整体,在最外层才加别名
SELECT S.NO 学号,
(CASE
WHEN S.ID = '1210527501' THEN
(SELECT DATE
FROM STU
WHERE ID = '1210527501')
WHEN S.ID = '1210527502' THEN
(SELECT DATE
FROM STU
WHERE ID = '1210527502')
WHEN S.ID = '1210527503' THEN
(SELECT DATE
FROM STU
WHERE ID = '1210527503')
ELSE
END) as 时间
FROM STU S
WHERE S.NO LIKE '1240156742010%';

读书人网 >SQL Server

热点推荐