您好,请教如何将CASE WHEN放入SELECT中,谢谢。SELECT "LOG".localtime,
CASE WHEN "LOG".objecttype=0
THEN SELECT content FORM "LOG" log1 WHERE "LOG".id=log1.id
WHEN "LOG".objecttype=1
THEN (SELECT name FORM "GROUP" group1 WHERE "LOG".object=group1.id )
WHEN "LOG".objecttype=2
THEN (SELECT name FORM "USER" user1 WHERE "LOG".object=user1.id )
ELSE (SELECT content FORM "LOG" log1 WHERE "LOG".id=log1.id )
END
FROM "LOG", "USER"
WHERE "USER".id="LOG".userid您好,问题出在夹在外查询中的CASE WHEN语句,我想在里面也可以查询,请问应该如何做,谢谢。
CASE WHEN "LOG".objecttype=0
THEN SELECT content FORM "LOG" log1 WHERE "LOG".id=log1.id
WHEN "LOG".objecttype=1
THEN (SELECT name FORM "GROUP" group1 WHERE "LOG".object=group1.id )
WHEN "LOG".objecttype=2
THEN (SELECT name FORM "USER" user1 WHERE "LOG".object=user1.id )
ELSE (SELECT content FORM "LOG" log1 WHERE "LOG".id=log1.id )
END
FROM "LOG", "USER"
WHERE "USER".id="LOG".userid您好,问题出在夹在外查询中的CASE WHEN语句,我想在里面也可以查询,请问应该如何做,谢谢。
SELECT "LOG".localtime,
( CASE WHEN "LOG".objecttype=0 THEN
(SELECT content FORM "LOG" log1 WHERE "LOG".id=log1.id ) ---维护值才行
WHEN "LOG".objecttype=1 THEN
(SELECT name FORM "GROUP" group1 WHERE "LOG".object=group1.id )
WHEN "LOG".objecttype=2 THEN
(SELECT name FORM "USER" user1 WHERE "LOG".object=user1.id )
ELSE
(SELECT content FORM "LOG" log1 WHERE "LOG".id=log1.id )
END ) COL
FROM "LOG", "USER"
WHERE "USER".id="LOG".userid 建议这种情况写一个function来使用,以后可以方便调用,且对程序维护性较好
( CASE WHEN "LOG".objecttype=0 THEN
(SELECT content FORM "LOG" log1 WHERE "LOG".id=log1.id ) ---不能有多值 WHEN "LOG".objecttype=1 THEN
(SELECT name FORM "GROUP" group1 WHERE "LOG".object=group1.id )
WHEN "LOG".objecttype=2 THEN
(SELECT name FORM "USER" user1 WHERE "LOG".object=user1.id )
ELSE
(SELECT content FORM "LOG" log1 WHERE "LOG".id=log1.id )
END ) COL
FROM "LOG", "USER"
WHERE "USER".id="LOG".userid
(CASE WHEN "LOG".objecttype=0
THEN (SELECT content FORM "LOG" log1 WHERE "LOG".id=log1.id)
WHEN "LOG".objecttype=1
THEN (SELECT name FORM "GROUP" group1 WHERE "LOG".object=group1.id)
WHEN "LOG".objecttype=2
THEN (SELECT name FORM "USER" user1 WHERE "LOG".object=user1.id)
ELSE (SELECT content FORM "LOG" log1 WHERE "LOG".id=log1.id)
END) content_name
FROM "LOG", "USER"
WHERE "USER".id="LOG".userid
THEN (SELECT content FORM "LOG" log1 WHERE "LOG".id=log1.id)
*
ERROR 位于第 3 行:
ORA-00923: 未找到预期 FROM 关键字
谢谢
( CASE WHEN "LOG".objecttype=0 THEN
(SELECT content FORM "LOG" log1 WHERE "LOG".id=log1.id ) ---不能有多值 WHEN "LOG".objecttype=1 THEN
(SELECT name FORM "GROUP" group1 WHERE "LOG".object=group1.id )
WHEN "LOG".objecttype=2 THEN
(SELECT name FORM "USER" user1 WHERE "LOG".object=user1.id )
ELSE
(SELECT content FORM "LOG" log1 WHERE "LOG".id=log1.id )
END ) COL
FROM "LOG", "USER"
WHERE "USER".id="LOG".userid
select decase(*) from table