2012-03-16 104 views
-1

我想从销售文件中组合销售人员列表与销售人员上次销售日期。 请注意,销售员可能还没有做任何销售!SQL - 选择+ MAx()

SELECT 
    SLSNO, 
    SLSNAME 
FROM 
    SALESMEN 

SELECT 
    SLSNO, 
    max(SALEDATE) 
FROM 
    SALESHEADER 
WHERE 
    SALESMANNO = SLSNO 
GROUP BY 
    SLSNO 
ORDER BY 
    SLSNO 

使用ibm db2。如果可能的话,更喜欢标准的ANSI SQL。

回答

2

在第二种情况下,如果Latest Sale尚未进行销售,它将为NULL

-- if you want all salesmen who have made a sale 
SELECT 
    SLSNO, 
    SLSNAME, 
    MAX(SALEDATE) AS [Latest Sale] 
FROM 
    SALESMEN AS s 
JOIN 
    SALESHEADER AS h 
ON 
    h.SLSNO = s.SLSNO 
WHERE 
    SALESMANNO = SLSNO 
GROUP BY 
    SLSNO, 
    SLSNAME 


-- if you want all salesmen even if they don't have a sale 
SELECT 
    SLSNO, 
    SLSNAME, 
    MAX(SALEDATE) AS [Latest Sale] 
FROM 
    SALESMEN AS s 
LEFT OUTER JOIN 
    SALESHEADER AS h 
ON 
    h.SLSNO = s.SLSNO 
WHERE 
    SALESMANNO = SLSNO 
GROUP BY 
    SLSNO, 
    SLSNAME 
+0

尝试过这种变化。也许db/3不会让我使用max()这样的 – 2012-03-16 19:00:25

+0

当然如果能让你像这样使用max() - 你是否包含了你所选择的'select'中的所有列, '子句? – Aprillion 2012-03-16 19:03:13

+0

你会得到什么错误? – diaho 2012-03-16 19:04:49