查看基于学期和年份
View based on semesters and year
我有一个 table,它包含一个 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
但我不确定如何根据年份区分年份和关联学期。
有什么帮助吗?
我不打算编写整个函数,但您可以使用 DECODE:
SELECT DECODE (SUBSTR(BEGDATE, 5, 2), '01', 'SEM1',
SUBSTR(BEGDATE, 5, 2), '05', 'SEM2',
etc.)
您可以使用 CASE 和 <.
更有效地编写它
一个简单的 case 语句将解决您的问题。
- Sem1:月 <= 04
- Sem2:月份 > 04 且月份 <= 08
- Sem3:其他
牢记这一点。
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;
我有一个 table,它包含一个 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
但我不确定如何根据年份区分年份和关联学期。 有什么帮助吗?
我不打算编写整个函数,但您可以使用 DECODE:
SELECT DECODE (SUBSTR(BEGDATE, 5, 2), '01', 'SEM1',
SUBSTR(BEGDATE, 5, 2), '05', 'SEM2',
etc.)
您可以使用 CASE 和 <.
更有效地编写它一个简单的 case 语句将解决您的问题。
- Sem1:月 <= 04
- Sem2:月份 > 04 且月份 <= 08
- Sem3:其他
牢记这一点。
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;