0

push 我在 firbird sql 中有一个查询,它显示了员工的最后一份工作。一个工作可能会显示多个,因为该员工可能经常来自一个客户。

我有一个像这样的查询:

**employee** - **from** - **till** - **Customer**
Ronaldo - 2017-01-01 - 2017-03-31 - Real Madrid
Ronaldo - 2017-04-01 - 2017-05-20 - Real Madrid
Ronaldo - 2017-05-25 - 2017-06-10 - Barcelona
Ronaldo - 2017-06-13 - 2017-12-31 - Real Madrid

现在,我的结果应该是这样的:

Ronaldo - 2017-01-01 - 2017-05-20 - Real Madrid
Ronaldo - 2017-05-25 - 2017-06-10 - Barcelona

这意味着,我不想让最新的行和相关的行与第一个从和最后一个到结合,如果下一个从不超过从第一个到的 7 天 - 否则我想显示两个都。

我现在的 SQL 是:

选择 *
从
(
 与 TB_LA 作为
    (
    选择 EP.PERSONALNR, max(EP.DATUMVON) 作为 DATUMVON
    来自 EINSPERS EP,AUFTRAG A
    其中 EP.PERSONALNR = 10337 且 EP.BERUFSCHL 不为空且 EP.DATUMVON

, TB_A 为 ( 选择 EP.PERSONALNR、EP.AUFTRAGNR、EP.DATUMVON、EP.DATUMBIS、K.KUNDENNR、1 作为 PARM 来自 EINSPERS EP、TB_LA、AUFTRAG A、KUNDEN K 其中 EP.BERUFSCHL 不为空且 EP.DATUMVON <= TIMESTAMP 'TODAY' 且 TB_LA.PERSONALNR = EP.PERSONALNR 且 TB_LA.DATUMVON = EP.DATUMVON 且 EP.AUFTRAGNR = A.AUFTRAGNR 且 A.KUNDENNR = K.KUNDENNR ) , TB_H 为 ( 选择 EP.PERSONALNR、EP.AUFTRAGNR、EP.DATUMVON、EP.DATUMBIS、K.KUNDENNR、K.KUNDNAME、K.DISPONENT 作为 DISPOKU、P.DISPONENT 作为 DISPOMA 来自 EINSPERS EP EP.AUFTRAGNR 上的内部连接 ​​AUFTRAG A = A.AUFTRAGNR 内连接 KUNDEN K ON A.KUNDENNR = K.KUNDENNR 内连接 TB_LA ON TB_LA.PERSONALNR = EP.PERSONALNR INNER JOIN PERSONAL P ON P.PERSONALNR = EP.PERSONALNR 左连接 TB_A ON TB_A.PERSONALNR = EP.PERSONALNR AND TB_A.KUNDENNR = K.KUNDENNR AND (TB_A.DATUMVON >= (EP.DATUMBIS-14) 或 TB_A.DATUMVON = EP.DATUMVON) WHERE EP.BERUFSCHL 不为 null 且 EP.DATUMVON <= TIMESTAMP 'TODAY' AND EP.DATUMBIS >= TIMESTAMP '2017-01-31' 以及 K.KUNDENNR = TB_A.KUNDENNR THEN 1 ELSE NULL END 为 null 且 TB_A 的情况.PARM 为空 ) 选择 * 从 TB_H )

我的结果是:

员工从直到客户
10337 30.01.2017 31.01.2017 120495
10337 14.02.2017 19.02.2017 117769
10337 20.02.2017 20.02.2017 127507
10337 21.02.2017 05.03.2017 127507
10337 06.03.2017 12.03.2017 117769

至少我想得到以下结果:

员工从直到客户
10337 30.01.2017 31.01.2017 120495
10337 14.02.2017 19.02.2017 117769
10337 20.02.2017 05.03.2017 127507
10337 06.03.2017 12.03.2017 117769

我该如何做最后一步?我不知道要解决我的问题:-(

补充:可以在 ms sql 或 firebird sql 中执行此操作,无论哪种方式,但我更喜欢 firebird sql。

谢谢你!

4

0 回答 0