说我有一张桌子,values看起来像:
id|field_id|value|date
1 |1 |2 |2013-06-01
2 |2 |5 |2013-06-01
3 |1 |3 |2013-06-02
4 |2 |9 |2013-06-02
5 |1 |6 |2013-06-03
6 |2 |4 |2013-06-03
Run Code Online (Sandbox Code Playgroud)
另一张表,fields看起来像
id|code
1 |small_value
2 |large_value
Run Code Online (Sandbox Code Playgroud)
我想从values哪里选择small_value大于large_value相同的行date.因此,对于上面的示例,查询应返回自from 6,(field_id= 1== small_value)> 4(field_id= 2== large_value)以来的最后两行.
数据库是Microsoft SQL Server 2012.
谢谢你的帮助
怎么样的
SELECT *
FROM [values] v
WHERE EXISTS(
SELECT 1
FROM [values] vl
WHERE vl.FIELD_ID = 2
AND vl.date = v.date
AND vl.value < v.value
)
AND v.FIELD_ID = 1
Run Code Online (Sandbox Code Playgroud)
这是另一个可能的例子
SELECT *
FROM [values] vs INNER JOIN
[values] vl ON vs.date = vl.date AND vs.FIELD_ID = 1 AND vl.FIELD_ID = 2
WHERE vs.value > vl.value
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17646 次 |
| 最近记录: |