gpt4 book ai didi

SQL - 在同一日期选择一列大于另一列的行

转载 作者:行者123 更新时间:2023-12-04 22:24:40 27 4
gpt4 key购买 nike

假设我有一个表,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

还有另一个表,fields,看起来像

id|code
1 |small_value
2 |large_value

我想从 values 中选择行,其中 small_value 在同一 date 大于 large_value .因此对于上面的示例,查询应该返回自 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

SQL Fiddle DEMO

这是另一个可能的例子

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

SQL Fiddle DEMO

关于SQL - 在同一日期选择一列大于另一列的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17231609/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com