我有一个包含字段BEGDATE的表,它是一个varchar2,包含诸如“20170405142030”之类的值。我正在尝试创建一个包含两个字段的视图。 第一个字段是年份(例如:2017),第二个字段是学期。这个学期以月为基础。
when the month is : 01 or 02 or 03 or 04 --> then semester contains value:sem1
when the month is : 05 or 06 or 07 or 08 --> then semester contains value:sem2
when the month is : 09 or 10 or 11 or 12 --> then semester contains value:sem3.
我现在有这个简单的查询:
CREATE VIEW V_EMP AS
SELECT SUBSTR(BEGDATE, 1, 4) AS ANNEE,SUBSTR(BEGDATE, 5, 2)
FROM EMP
但我不知道如何分开这些年来并根据这一年与学期联系。 有什么帮助吗?
答案 0 :(得分:1)
简单的案例陈述将解决您的问题。
记住这一点。
SELECT SUBSTR (begdate, 1, 4) AS YEAR,
CASE
WHEN SUBSTR (begdate, 5, 2) <= 4
THEN 'Sem1'
WHEN SUBSTR (begdate, 5, 2) <= 8
THEN 'Sem2'
ELSE 'Sem3'
END sem
FROM emp;
答案 1 :(得分:0)
我不会写整个功能,但你可以使用DECODE:
SELECT DECODE (SUBSTR(BEGDATE, 5, 2), '01', 'SEM1',
SUBSTR(BEGDATE, 5, 2), '05', 'SEM2',
etc.)
您可以使用CASE和&lt;。
更有效地编写它