我在SQL Server中有表。我想在每个组中查找最后一行。我试着用下面的查询,但它不返回确切的结果。 ID列是PK,其他列设置为NOT NULL。通过查询查找组中的最后一行 - SQL Server
select ID, Name FROM
(select ID, Name, max(ID) over (partition by Name) as MAX_ID
from Customer) x where ID= MAX_ID
要更清楚。我有2 queries.First:
ALTER PROCEDURE [dbo].[Ramiz_Musterija_RowNum]
@Datum DATE,
@BrojKamiona INT
AS SET NOCOUNT ON
SELECT Ime,MusterijaID,RowNum=ROW_NUMBER() OVER(ORDER BY Ime)FROM Musterije
WHERE [email protected] AND [email protected] GROUP BY Ime,MusterijaID
和第二单:
ALTER PROCEDURE [dbo].[Ramiz_Musterija_FindLast]
@Datum DATE,
@BrojKamiona INT
AS SET NOCOUNT ON
SELECT a.* from Musterije a
JOIN (SELECT Ime, MAX(MusterijaID) AS MAXID FROM Musterije GROUP BY Ime) AS b
ON a.MusterijaID = b.MAXID AND [email protected] AND [email protected]
然后LINQ查询:
var rowNumList = from f in customerFindLastList
join r in customerRowNumList
on f.MusterijaID equals r.MusterijaID
select new { r.RowNum };
我试图找到最后一排每排,再搭配这2查询MusterijaID列。 任何有关这方面的帮助,将不胜感激。 这是一组的输出。现在,问题是这两个查询匹配“4250”MusterijaID,但我需要匹配“4229”上的查询。
Ime MusterijaID
100//1 4246
100//1 4247
100//1 4248
100//1 4249
100//1 4250
100//1 4229
“*不返回准确结果*” 是** **的方式来模糊。你需要更具体。向我们展示一些示例数据和你得到的。或者更好的创建一个例子:http://sqlfiddle.com – 2013-03-22 13:27:26
假设“最后一行”意味着最大的“id”,那么你的查询看起来是正确的。 – 2013-03-22 13:37:35