我有一个包含三个字段的表:name(string)id(number)date(time)
我需要一个查询,它会返回日期范围内的所有匹配项,然后针对每个匹配项返回所有其他具有相同ID的匹配项。
即如果:
John 100 1/1/2000
Karen 200 1/1/2000
Tom 300 2/1/2000
Janet 100 3/1/2000
我需要一个查询,对于一个日期范围,即1-1 / 1/2000将返回John,Karen和Janet - John和Karen,因为他们在日期范围和Janet,因为它具有相同的id(100)来自日期结果的其中一个ids(约翰)。
我必须知道结果的顺序,因为我需要将结果转换为表格中的JSON
[ [ dateMatch1, extraIDmatch1, extraIdmatch2 ], [ dateMatch2] ]
或者在这种情况下[[' John',' Janet' ],[' Karen']]
实现这一目标的最佳方法是什么?
谢谢!
答案 0 :(得分:1)
一种方法是:
select t.*
from t
where t.id in (select t2.id
from t t2
where t2.date between @start and @end
)
order by id, (case when t.date between @start and @end then 1 else 2 end);