我已经尝试了大约三个小时来解决这个问题,但找不到解决方案。
如何在表格中显示每个名字的第一次出现(最短时间)的整行(全部20列)?
例如,我想做这样的事情,但这不起作用:
public partial class p_GetTaresForReturnResult : INotifyPropertyChanged
{
...
[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_IsReturned", DbType="Bit")]
public System.Nullable<bool> IsReturned
{
get
{
return this._IsReturned;
}
set
{
if ((this._IsReturned != value))
{
this._IsReturned = value;
NotifyPropertyChanged("IsReturned");
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(String propertyName = "")
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
答案 0 :(得分:3)
您必须首先获得每个名称的最短时间,然后加入到原始名称/时间匹配的表格中。
获得最短时间:
SELECT name, MIN(time) AS minTime
FROM myTable
GROUP BY name;
然后,获取所有列:
SELECT m.*
FROM myTable m
JOIN(
SELECT name, MIN(time) AS minTime
FROM myTable
GROUP BY name) tmp ON tmp.name = m.name AND tmp.minTime = m.time;
答案 1 :(得分:2)
大多数数据库都支持ANSI标准窗口函数。有了这些,您可以这样做:
select t.*
from (select t.*, row_number() over (partition by name order by time) as seqnum
from table t
) t
where seqnum = 1;