English 中文(简体)
• 如何显示当前信息库
原标题:How to display the current info base on date

我的文字是展示公司、雇员人数、最后名称、第一名称、当前工作和当前工资。

得出目前情况意味着有相关日期。

我如何展示该雇员目前的工作和工资?

段 次 页 次

empno lastname firstname
111 james lebron
222 bryant kobe
333 jordan michael
444 curry stephen

优等

company empno effdate job salary
lakers 111 04/16/15 assistant 1500.00
lakers 111 02/02/16 coach 4000.00
lakers 222 07/22/17 analyst 3000.00
bulls 333 04/12/17 secretary 5000.00
bulls 333 07/28/18 manager 5000.00
warriors 444 10/04/19 chef 2000.00

我在生效日期(有效日期)上使用了“彩虹”来获得目前最高水平的工作和工资。 但它显示了过去的工作和工资。

SELECT z.company, em.empno, em.lastname, em.firstname, z.job, z.salary
FROM emp em
JOIN ( SELECT dj.company, dj.empno, dj.effdate, dj.job, dj.salary
    FROM dept_job dj
    JOIN (SELECT company, empno, MAX(effdate) AS maxefffdate
        FROM dept_job
        GROUP BY company, empno) pe
    ON dj.empno = pc.empno AND dj.effdate = pe.maxeffdate) z
ON em.empno = z.empno
ORDER BY company, empno;

结果(重)

company empno lastname firstname job salary
lakers 111 james lebron assistant 1500.00
lakers 111 james lebron coach 4000.00
lakers 222 bryant kobe analyst 3000.00
bulls 333 jordan michael secretary 5000.00
bulls 333 jordan michael manager 5000.00
warriors 444 curry stephen chef 2000.00

我想要的是什么?

company empno lastname firstname job salary
lakers 111 james lebron coach 4000.00
lakers 222 bryant kobe analyst 3000.00
bulls 333 jordan michael manager 5000.00
warriors 444 curry stephen chef 2000.00
最佳回答
SELECT dj.company
    ,em.empno
    ,em.lastname
    ,em.firstname
    ,dj.job
    ,dj.salary
FROM emp em
JOIN dept_job dj ON em.empno = dj.empno
JOIN (
    SELECT empno
        ,MAX(effdate) AS maxefffdate
    FROM dept_job
    GROUP BY empno
    ) z
ON dj.empno = z.empno
    AND dj.effdate = z.maxefffdate
ORDER BY company
    ,empno;
问题回答
SELECT z.company, em.empno, em.lastname, em.firstname, z.job, z.salary
FROM emp em
JOIN (
    SELECT dj.company, dj.empno,
        MAX(dj.effdate) OVER (
            PARTITION BY dj.company, dj.empno, dj.job, dj.salary
            ) AS maxeffdate,
        dj.job, dj.salary
    FROM dept_job dj ) z
ON em.empno = z.empno
ORDER BY company, empno;

采用摘录于您的WHERE条款中的内容,该内容仅于最近的日期,因此只给你最新的记录。

SELECT dj.company, e.empno, e.lastname, e.firstname, dj.job
FROM emp e
JOIN dept_job dj ON e.empno = dj.empno
WHERE dj.effdate = (
  SELECT MAX(effdate)
  FROM dept_job
  WHERE empno = e.empno
)
ORDER BY e.empno;




相关问题
SQL SubQuery getting particular column

I noticed that there were some threads with similar questions, and I did look through them but did not really get a convincing answer. Here s my question: The subquery below returns a Table with 3 ...

难以执行 REGEXP_SUBSTR

I m 查询Oracle 10g。 我有两张表格(样本数据见下文)。 i m 试图提取一些领域

SQL Query Shortcuts

What are some cool SQL shorthands that you know of? For example, something I learned today is you can specify to group by an index: SELECT col1, col2 FROM table GROUP BY 2 This will group by col2

PHP array callback functions for cleaning output

I have an array of output from a database. I am wondering what the cleanest way to filter the values is example array Array ( [0] => Array ( [title] => title 1 ...

OracleParameter and DBNull.Value

we have a table in an Oracle Database which contains a column with the type Char(3 Byte). Now we use a parameterized sql to select some rows with a DBNull.Value and it doesn t work: OracleCommand ...

Running numbers in SQL

I have a SQL-statement like this: SELECT name FROM users WHERE deleted = 0; How can i create a result set with a running number in the first row? So the result would look like this: 1 Name_1 2 ...

How to get SQL queries for each user where env is production

I’m developing an application dedicated to generate statistical reports, I would like that user after saving their stat report they save sql queries too. To do that I wrote the following module: ...

热门标签