2016-07-08 12 views
-2
id  name  salary  date 
1  aaa  10000  10/2/2014 
1  aaa  15000  06/04/2015 
1  aaa  20000  16/07/2016 
1  aaa  25000  10/04/2017 

Wenn ein Mitarbeiter Gehalt Wanderung bekommt jedes Jahr wie kann ich einen Mitarbeiter des laufende Jahr Gehalt bekommen? Diese Abfrage sollte für jedes Jahr in Ordnung sein.Abfrage für aktuelles Gehalt basierend auf Datum

Wenn ich es im Jahr 2013 ausführen zeigt 2013 Jahresgehalt, wenn im Jahr 2016 ausgeführt wird, zeigt es 2016 Jahresgehalt, ähnlich, für 2017 auch wäre es Display 2017 Gehalt.

+0

Verwenden Sie 'MySQL' oder' Oracle'? – Siyual

+0

Verwenden Sie MySQL oder Oracle? (Verschiedene Produkte, verschiedene Datum/Uhrzeit-Funktionen.) – jarlh

+0

für beide Ich brauche – MahiA

Antwort

0

prüfen diese SQL Fiddle für MySQL

SELECT 
    SUM(salary) as salary 
FROM salary 
WHERE YEAR(STR_TO_DATE(date, '%d/%m/%Y')) = YEAR(CURDATE()) 
GROUP BY id 
+0

Vielen Dank mein Freund Sie gaben wunderbare Antwort – MahiA

0

in Mysql können Sie wie folgt tun:

select * form tablename where YEAR(now()) = YEAR(fieldname) 
0

Lösung für ORACLE

SELECT * 
FROM SALARY_TABLE 
WHERE NAME = 'whatever_the_name_is' 
AND TRUNC(HIKE_DATE,'YYYY') = TRUNC(SYSDATE,'YYYY'); 

Beispielabfrage mit Dummy-Daten

WITH SALARY_TABLE AS -- Sample data queried from DUAL 
    (SELECT 1       AS ID, 
    'aaa'        AS name, 
    10000        AS salary, 
    TO_DATE('10/2/2014', 'dd/mm/yyyy') AS hike_date 
    FROM dual 
    UNION 
    SELECT 2, 'aaa', 15000, TO_DATE('06/04/2015', 'dd/mm/yyyy') FROM dual 
    UNION 
    SELECT 3, 'aaa', 20000, TO_DATE('16/07/2016', 'dd/mm/yyyy') FROM dual 
    UNION 
    SELECT 3, 'aaa', 25000, TO_DATE('10/04/2017', 'dd/mm/yyyy') FROM dual 
) 
SELECT * -- Actual solution 
FROM SALARY_TABLE 
WHERE NAME      = 'aaa' 
AND TRUNC(HIKE_DATE,'YYYY') = TRUNC(SYSDATE,'YYYY'); 
Verwandte Themen