2017-10-19 4 views
0

私は、4月と5月のような特定の月から雇用された従業員だけを表示し、特定の年に雇用された従業員を除外するSQL文を作成しようとしています。これを行う方法を説明するオンラインリソース。 Oracle SQLを使用しているため、使用したYEARおよびMONTHコマンドが無効な識別子で満たされています。これは私がこれまで持っていたものです。出力を特定の月と年に制限する

SELECT EMPLOYEE_ID, 
     SUBSTR(LAST_NAME || ' ' || FIRST_NAME, 1, 25) AS "Full Name", 
     JOB_ID, 
     TO_CHAR(last_day(hire_date), 'Month fmDd"st" "of" YYYY') AS "Start Date" 
FROM EMPLOYEES 
WHERE HIRE_DATE NOT IN ('01-01-1992' TO_DATE('12-31-1992')); 
+0

任意のサンプルデータ?このような – L30n1d45

+1

ものは "月fmDd "ST"" の ' "フルネーム"、 JOB_ID、 TO_CHAR(HIRE_DATE、AS(|| FIRST_NAME、1、25' EMPLOYEE_IDを選択、 SUBSTR LAST_NAME ||'」) を?:します('01 -01-1992 'TO_DATE('12 -31-1992')) とTO_NUMBER(TO_CHAR(hire_date、 'mm'))in(開始日) 従業員から 4,5); ' – L30n1d45

+0

サンプルデータが必要ですか?私は検索のために特定の年月や月をどのように除外するかを理解しようとしています。特定の役職の従業員を検索する方法と同様です。 – Glaz

答えて

1

これは役に立ちますか?

SELECT EMPLOYEE_ID, SUBSTR(LAST_NAME || ' ' || FIRST_NAME, 1, 25) AS "Full Name", 
JOB_ID, 
TO_CHAR(hire_date, 'Month fmDd"th" "of" YYYY') AS "Start Date" 
FROM EMPLOYEES 
WHERE HIRE_DATE NOT 
BETWEEN TO_DATE('01-01-1992','MM-DD-YYYY') 
    AND TO_DATE('12-31-1992','MM-DD-YYYY') 
AND TO_NUMBER(TO_CHAR(hire_date,'mm')) in (4,5); 
0

このような条件にはEXTRACTを使用することもできます。

SELECT employee_id, 
     "full name", 
     "start date" 
FROM (SELECT employee_id, 
       Substr(last_name 
         || ' ' 
         || first_name, 1, 25) AS 
       "Full Name", 
       job_id, 
       To_char(Last_day(hire_date), 'Month fmDd"st" "of" YYYY') AS 
       "Start Date" 
         , 
       Extract (year FROM hire_date) 
         hired_year, 
       Extract (month FROM hire_date) 
       hired_month 
     FROM hr.employees) 
WHERE hired_year NOT IN (1992, 1993) 
     AND hired_month NOT IN (4, 5); 
関連する問題