Tsql 当/HasNext变量输入循环时的情况

Tsql 当/HasNext变量输入循环时的情况,tsql,case-when,Tsql,Case When,老实说,我很难向我的同事表达这个问题,所以请对我宽容一点。如果需要,我可以详细说明 所以这里是交易,我有一个关于SQL的Case When语句的理论问题。这不是我需要帮助的具体情况,这只是一个复杂的问题,我需要回答关于t-SQL语言能力的问题,我想知道这是出于我自己未来的目的 我知道,在Java中,您可以创建循环并使用.hasNext()方法从源(例如键盘)连续检索输入,通过这样做,您基本上可以创建一个循环,该循环执行[某些操作],直到输入用尽为止 我想知道我是否可以使用类似的函数(如果函数不是

老实说,我很难向我的同事表达这个问题,所以请对我宽容一点。如果需要,我可以详细说明

所以这里是交易,我有一个关于SQL的Case When语句的理论问题。这不是我需要帮助的具体情况,这只是一个复杂的问题,我需要回答关于t-SQL语言能力的问题,我想知道这是出于我自己未来的目的

我知道,在Java中,您可以创建循环并使用.hasNext()方法从源(例如键盘)连续检索输入,通过这样做,您基本上可以创建一个循环,该循环执行[某些操作],直到输入用尽为止

我想知道我是否可以使用类似的函数(如果函数不是正确的术语,请纠正我),我可以在T-SQL中使用Case When语句

以下是一些psuedo代码,例如:

case when [Column Y has next] then 'X'
本质上,我想知道我是否能告诉一个例子,当function继续执行,直到它的值用完或遇到空值


请让我知道,如果我在这里走对了路,我的大脑有点卡在面向对象的Java世界和关系数据库的SQL世界之间。感谢所有反馈

基本上是行操作的情况。具体地说,您需要考虑基于联接和where子句处理的数据集,然后考虑运算符针对结果集中的每一行运行时的情况。因此,没有上一行、下一行或“有下一行”的概念


话虽如此,总有办法实现你的愿望。一般来说,我通常会推荐“自连接”。这实际上只是常规联接类型(内部联接、左侧联接、右侧联接、完全联接和交叉联接)的一个特例。这里的不同之处在于,不是连接两个不同的表,而是将同一个表连接回自身。如果引入一个行数函数并将其包含在where子句中,则可以有效地将一行连接到下一行,这将有效地为您提供实现“has next”功能的方法。

案例操作的数据范围由
where
join
定义对于
select
语句,它是其中的一部分。您能否更具体地解释一下您试图解决的实际问题是什么?例如:“我试图在大于3的列中找到第一个值”。这可能有一个简单的SQL答案。但是你必须从这个角度来思考,而不是用Java这样的命令式语言来解决问题的低级机制。谢谢你的回答,我没有“特定”的问题,我只是想知道SQL语言是否理解列在数据集中具有另一个值的概念。谢谢你的回答,G马斯特罗斯为我说得很清楚!很抱歉问这样一个棘手的问题。因此,在使用时,一次操作整个数据集(由join语句和我在查询中选择的内容指定)的情况。本质上,它不是逐行执行的?如果这是真的,那么我理解你所说的,但是如果我错了,请纠正我。另外,我从来没有想到过自我加入的想法,谢谢你的建议。我以后一定会用的。这样想。。。如果使用“Select*”和所有联接以及where子句条件运行查询,那么Case-When将只能访问每行上的数据。更具体地说,是语句无法访问另一行上的数据的情况。通过执行自联接,可以让查询在同一行上返回数据,从而有效地从另一行获取数据。