【发布时间】:2016-03-15 06:34:27
【问题描述】:
我有类似的数据表,
Table1:
id Name date
--------------
1 xxx 01/01/2015
2 yyy 01/02/2015
3 aaa 02/03/2015
Table 2:
id Name date
--------------
1 xxx 07/01/1015
2 xxx 09/01/2015
3 yyy 05/02/2015
4. aaa 04/03/2015
我试图通过加入两个表来获取日期差异。但是我必须在第一次出现名称时使用 Table1 来获取差异。如果名称出现重复值,则仅使用 Table2 即可获得差异。请注意 (dd/mm/yyyy) 格式的日期 结果应该是这样的,
Name DateDifference
xxx 6 (07/01/2015 - 01/01/2015)
xxx 2 (07/01/2015 - 09/01/2015)
yyy 4 (01/02/2015- 05/02/2015)
aaa 2 (02/03/2015 -04/03/2015)
我试过的SQL查询是,
SELECT s.spidername,
T1.Date,
MIN(T2.Date) AS Date2,
DATEDIFF("D", T1.Date, MIN(T2.Date)) AS DaysDiff
FROM Spider_DailyJobCount T1
LEFT JOIN Spider_DailyJobCount T2
ON T1.SpiderName = T2.SpiderName
AND T2.Date > T1.Date
join spider s on s.spidername = t1.spidername
where //Condition
GROUP BY T1.Date,s.spidername
我试过的LINQ查询是,
var query = (from item1 in Table1
join item2 in Table1 on item1.Name equals item2.SpiderName
where item2.Date > item1.Date
join origin in Table2 on item1.Name equals origin.Name
where // condition
group new { item1,item2 } by new { item1.Name,item1.Date } into grp
select new
{
DayDiff = DbFunctions.DiffDays(grp.Key.Date, grp.Min(d => d.item2.Date)),
}
).ToList();
我已经尝试过这些东西,但无法获得所需的输出。我只尝试过 Table2 值。我真的不知道如何从 Table1 中获取第一次出现的值。 任何帮助或建议表示赞赏。 提前致谢!
【问题讨论】:
标签: sql-server linq date