Sql 添加一列,显示日期之前该ID的记录数
我有一个表,它有一个名为START_DATE的列,类型为datetime,id由id表示。我想查找该START_DATE之前该人员在同一表中的记录数 这是我的尝试Sql 添加一列,显示日期之前该ID的记录数,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我有一个表,它有一个名为START_DATE的列,类型为datetime,id由id表示。我想查找该START_DATE之前该人员在同一表中的记录数 这是我的尝试 select ID,count(*) from dbo.MyTable where START_DATE < (select START_DATE from dbo.MyTable) group by ID 但它不起作用。这是您想要的: SELECT t.ID,t.start_date,max(t.OTHER_COLUMN),
select ID,count(*) from dbo.MyTable
where START_DATE < (select START_DATE from dbo.MyTable)
group by ID
但它不起作用。这是您想要的:
SELECT t.ID,t.start_date,max(t.OTHER_COLUMN),max(T.OTHER_COLUMN2)...,count(*) from dbo.MyTable t
INNER JOIN dbo.MyTable s
ON(t.id = s.id and t.start_date > s.start_date)
GROUP BY t.ID,t.start_date
或使用相关查询:
SELECT t.ID,
t.start_date,
t.OTHER_COLUMN,
t.OTHER_COLUMN2,
......
(SELECT COUNT(*) FROM dbo.MyTable s
WHERE t.id = s.id and t.start_date > s.start_date)
FROM dbo.MyTable t
请编辑您的问题,并包括样本数据和期望的结果。这个问题没有真正意义。如果一个人有多个记录,那么这个人大概有多个开始日期。效果很好。但正是这样,我想选择/显示t/s中的所有其他列。基本上,我想添加一个新列。当我执行select t.*、t.patient\u IEN、t.admission\u DATE之类的操作时,它给出的列“dbo.someothercol”在select列表中无效,因为它既不包含在聚合函数中,也不包含在GROUP BY子句中。我如何编辑它以同时显示其他列?@PepperBoy我已经更新了我的解决方案,两个解决方案都应该有效,第二个肯定有效。我还有一个问题。我有一系列相同Id的开始日期,同时显示其他列,我想添加一个新列,用于查找Idperson的开始日期和他的下一个开始日期之间的差异。我试着这样做:选择t.Id,t.START_DATE,从dbo.MyTable t内部连接dbo.MyTable s ONt.Id=s.Id和t.START_DATE>s.START_DATE组按t.patient_Id,t.START_DATE请发布一个新的问题,像这样很难阅读和理解,问题已经结束了。好的,我们在这里添加了它