从列

时间:2015-08-19 15:07:15

标签: sql subquery db2-400

我有一张表中使用的扫描码,但该表并没有保存最新的扫描码。所以我在这些订单上有多个订单号。

问题是我需要每个订单的每个项目编号的最后扫描代码,而不是每次扫描时都需要。基本上我不需要知道它已从准备到定制扫描到发货。我只需要知道它是在发货。我得到一个项目编号的三个结果,因为它已被扫描三次。我不需要从以前扫描过的地方重复结果。

" S3DTNSEQ#"列是扫描的次数。我只需要保留扫描次数最多的行。低于我需要摆脱的最高扫描次数的任何东西。 '扫描到'列是" S3DTSTO"。所以使用" S3DTNSEQ#"用于确定保留哪一行的列是想法。

SELECT 
    TMON as "order number",
    TMCPO# as "po#",
    TMRQD as "due date",
    S3ITNO as "item number",
    S3ORQT as "quantity",
    TMCUST as "cust#",
    TMNAME as, "cust name"
    S3DTSTO as "scanned to",
    TMSCHID as "sched id,
    MAX( S3DTNSEQ# ) AS "S3DTNSEQ#",
    S3DTADT as "maintained date" 
FROM 
    TSA400.NRPDTA.SOP114F1 SOP114F1,  
    TSA400.NRPDTA.SOA SOA,  
    TSA400.NRPDTA.S3O S3O,  
    TSA400.NRPDTA.S3DTU S3DTU 
WHERE SOP114F1.TMON = SOA.SOON
    AND SOP114F1.TMSHP# = SOA.SOSHPN
    AND SOP114F1.TMCUST = SOA.SOCUST
    AND SOA.SOON = S3O.S3ON
    AND SOP114F1.TMON = S3O.S3ON
    AND SOA.SOCUST = S3O.S3CUST
    AND SOP114F1.TMCUST = S3O.S3CUST
    AND SOA.SOSHPN = S3O.S3SHPN
    AND SOP114F1.TMON = S3DTU.S3DTON
    AND SOP114F1.TMSHP# = S3DTU.S3DTSHP# 
GROUP BY 
    TMON,
    TMCPO#,
    TMRQD,
    S3ITNO,
    S3ORQT,
    TMCUST,
    TMNAME,
    S3DTSTO,
    TMSCHID,
    S3DTADT 

我想我需要一个子查询才能做到这一点,但我完全迷失了,如何做到这一点。我道歉,查询是在" Showcase"它广泛使用where子句而不是连接。

0 个答案:

没有答案