Sql server 2005 使用另一列的值分组

Sql server 2005 使用另一列的值分组,sql-server-2005,Sql Server 2005,我有桌上用品 ID identity autoincement, IDArticle: nvarchar(100) ,IDCar nvarchar(100), createddate 如何将其转换为: SELECT IDCar , MAX(createddate) FROM Articles GROUP BY IDCar 得到一篇文章 例如: 预期结果是: art3 art5 它不会与以下内容重复: +1,但是a.createdate=max.max\u date需要a.createdd

我有桌上用品

ID identity autoincement, IDArticle: nvarchar(100) ,IDCar nvarchar(100), createddate
如何将其转换为:

SELECT IDCar , MAX(createddate)
FROM Articles
GROUP BY IDCar 
得到一篇文章 例如:

预期结果是:

art3
art5
它不会与以下内容重复:

+1,但是
a.createdate=max.max\u date
需要
a.createddate=max.max\u date
+1,但是
a.createdate=max.max\u date
需要
a.createddate=max.max\u date
使用示例数据,返回5行,您需要将
和amd.MaxCreatedDate=a.createddate
添加到
ON
连接使用示例数据,这将返回5行,您需要将
和amd.MaxCreatedDate=a.createddate
添加到
ON
连接的
中,如果您使用更好的表别名替换保留字:
外部
内部
。否则,SQL Server会向您提供:
Msg 156,级别15,状态1,第1行关键字“outer”附近的语法不正确。
如果您使用更好的表别名替换保留字:
outer
internal
,则会起作用。否则,SQL Server会向您提供:
Msg 156,级别15,状态1,第1行关键字“outer”附近的语法不正确。
art3
art5
SELECT outerTable.IDArticle
FROM Articles outerTable
WHERE outerTable.createddate = 
    (SELECT MAX(innerTable.createddate) 
     FROM Articles innerTable
     WHERE outerTable.IDCar = innerTable.IDCar
     GROUP BY innerTable.IDCar) 
SELECT a.IDArticle
FROM
(
  SELECT IDCar , MAX(createddate) as max_date
  FROM Articles
  GROUP BY IDCar 
) max
INNER JOIN Articles a ON a.IDCar = max.IDCar and a.createddate = max.max_date
WITH ArticlesMaxDate (IDCar, MaxCreatedDate) AS
(
    SELECT 
        IDCar , MAX(createddate) AS MaxCreatedDate
    FROM 
        Articles 
    GROUP BY 
        IDCar 
)
SELECT 
    a.IDcar
   , a.IDArticle
   , amd.MaxCreatedDate
FROM
   Articles a
   INNER JOIN ArticlesMaxDate amd ON amd.IDCar = a.IDCar
      AND amd.MaxCreatedDate = a.createddate