选择SQL存储过程中的最高ID号

时间:2013-09-24 07:56:03

标签: sql-server tsql stored-procedures aggregate-functions

我正在编写一个如下所示的存储过程:

SELECT Replace(c_invoice, Char(13) + Char(10), ''),
       c_uom1,
       c_uom2
FROM   @invoice_TABLE AS invoice
       INNER JOIN @uom1_TABLE AS uom1
               ON invoice.ID = uom1.ID
       INNER JOIN @uom2_TABLE AS uom2
               ON uom1.ID = uom2.ID
WHERE  uom1.ID = 4

但我希望WHERE子句使用最高的uom1.ID号码 - 有人可以告诉我该怎么做吗?

3 个答案:

答案 0 :(得分:1)

您可以使用WHERE

代替TOP WITH TIES... ORDER BY
SELECT TOP (1)  WITH TIES replace(c_invoice, char(13) + char(10), ''),
               c_uom1,
               c_uom2
FROM   @invoice_TABLE AS invoice
       INNER JOIN @uom1_TABLE AS uom1
         ON invoice.ID = uom1.ID
       INNER JOIN @uom2_TABLE AS uom2
         ON uom1.ID = uom2.ID
ORDER  BY uom1.ID DESC 

答案 1 :(得分:0)

SELECT replace(c_invoice,char(13) + char(10), ''), c_uom1, c_uom2 
    FROM @invoice_TABLE AS invoice
    INNER JOIN @uom1_TABLE as uom1 ON invoice.ID = uom1.ID
    INNER JOIN @uom2_TABLE as uom2 ON uom1.ID = uom2.ID
    WHERE uom1.ID = (SELECT MAX(ID) FROM @uom1_TABLE)

答案 2 :(得分:0)

试试这个,

SELECT replace(c_invoice,char(13) + char(10), ''), c_uom1, c_uom2 FROM @invoice_TABLE AS invoice
    INNER JOIN (select MAX(ID) AS ID FROM @uom1_TABLE) as uom1 ON invoice.ID = uom1.ID
    INNER JOIN @uom2_TABLE as uom2 ON uom1.ID = uom2.ID