c# - 是否需要联合查询

标签 c# sql sql-server

我需要一些帮助来编写查询。我有这个数据...

vDir    iNumber
North   19
North   27
North   29
North   31
South   46
South   49
South   51
South   61

我需要查询数据并得到类似这样的输出

vDir    iLowNumber    iHiNumber
North   19            27
North   27            29
North   29            31
South   46            49
South   49            51
South   51            61

这里的想法是选择方向,LowNum,然后是 nextNumber。也当方向改变时重新开始。 (这就是为什么我认为我需要一个联盟,也许先获得北方,然后联盟南方)。还要注意每个方向的最高数字不会创建记录,因为没有更高的数字。第一组有8条记录,查询结果只有6条。

如何创建执行此操作的查询?这也是一个 2008 SQL 数据库,所以我可以使用 2008 TSQL。我真的很好奇如何在 SQL 中执行此操作。谢谢大家!

最佳答案

另一种可能的解决方案:

SELECT
    T1.vDir,
    T1.iNumber AS iLowNumber,
    T2.iNumber AS iHiNumber
FROM
    My_Table T1
INNER JOIN My_Table T2 ON
    T2.vDir = T1.vDir AND
    T2.iNumber > T1.iNumber
LEFT OUTER JOIN My_Table T3 ON
    T3.vDir = T1.vDir AND
    T3.iNumber > T1.iNumber AND
    T3.iNumber < T2.iNumber
WHERE
    T3.vDir IS NULL  -- If this is NULL it means that no rows exist between T1 and T2

关于c# - 是否需要联合查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3111569/

相关文章:

c# - 在 ASP.NET C# 中抛出异常

c# - 在 GDI+ 中递归绘制矩形时出现 OutOfMemory 异常

c# - 通过 POCO 将 System.Configuration 移植到 .NET Core?

c# - 如何在 C# 中锁定服务堆栈 Redis 列表

sql - sqlite`order by`和`where`子句可以一起使用Index吗

sql-server - 字符串中第一个字符的 T-SQL 索引

php - MySQL + PHP data/codescheme 设计多重差异化

python - 使用 SQLAlchemy 获取表中的行数

sql-server - SQL Server 显示零计数

sql-server - 重置 JDBC Kafka 连接器以从头开始提取行?