试图获得涉及MAX(Date)和GROUP的单个记录

时间:2014-07-31 18:21:42

标签: sql sql-server tsql

我正在尝试创建一个查询,其中我从项目编号和客户开始,我必须确定最后的售价。

所涉及的表格是

SOP30200 =销售标题 SOP30300 =销售明细行

给出以下代码和结果:

CODE:

SELECT 
    SOP30200.CUSTNMBR,
    MAX(SOP30200.DOCDATE),
    SOP30300.ITEMNMBR,
    SOP30300.UNITPRCE
FROM 
        SOP30200 
        INNER JOIN
        SOP30300 ON 
            SOP30300.SOPNUMBE = SOP30200.SOPNUMBE AND 
            SOP30300.SOPTYPE = SOP30200.SOPTYPE
WHERE
    SOP30200.SOPTYPE = 3 AND
    SOP30200.CUSTNMBR = 'FAKECUST' AND
    SOP30300.ITEMNMBR = 'FAKEITEM'
GROUP BY
    SOP30200.CUSTNMBR,
    SOP30300.ITEMNMBR,
    SOP30300.UNITPRCE

结果:

CUSTNMBR    (No column name)              ITEMNMBR                          UNITPRCE
FAKECUST  2013-07-12 00:00:00.000         FAKEITEM                          16.80000
FAKECUST  2014-02-14 00:00:00.000         FAKEITEM                          17.14000

我收到2条记录,因为查询按UNITPRCE分组,我们已经以两种不同的价格将此商品出售给该客户。但是,我知道,我希望看到这四个字段,但只有一个记录具有最新日期。

帮助!!

谢谢:)

1 个答案:

答案 0 :(得分:0)

添加order by MAX(SOP30200.DOCDATE) DESC并将Select更改为Select Top 1