首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

一条Oracle语句,报错了,求大侠们改上。

2012-12-19 
一条Oracle语句,报错了,求大侠们改下。。。SELECT S.NO 学号,CASEWHEN S.ID 1210527501 THEN(SELECT DATE

一条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%'; 


报红色部分缺失关键字。。。
 
[最优解释]
語法錯誤了吧

你想表達的是這樣吧:

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 code?123456789101112SELECT S.NO 学号,            (SELECT TOP 1 DATE               FROM STU              WHERE ID = S.ID AND S.ID = '1210527501') AS 时间1,           ……



你好,我按照你的意思改了。

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') AS 时间
           ELSE
         END
    FROM STU S
   WHERE S.NO LIKE '1240156742010%';

不过,STU部分报ora-00905,缺失关键字。。。

[其他解释]
oracle?
[其他解释]
干嘛不放到Oracle去问?
[其他解释]
PL/SQL Developer,我是这个软件下写的,就以为是SQL了。。。。。。新手,多多包涵!

热点排行