可能需要光标

时间:2010-12-23 08:40:17

标签: sql sql-server tsql stored-procedures cursor

我有一个明显简单的问题,但找不到好的解决方案,所以我会感谢社区的帮助。

假设我的表有三列:DealID,TransID和Number。让我们说我有4行,DealID的值在所有4行中相同,TransID在每一行中具有不同的值(并且数据按此列递增排序)并且Number在第一行中具有一些值而在所有其他行中具有NULL

我的简单问题是:对于精确的Trans_Id,如何在sproc中确定所有大于当前的Trans_Id值是Number NULL的所有值?即我想知道对于大于当前Trans_Id值的任何其他Trans_Id,是否存在与NULL不同的Number值。

提前TnX!

维迪奇

2 个答案:

答案 0 :(得分:1)

这是怎么回事:

SELECT * FROM mytable
WHERE DealID = (SELECT DealID FROM mytable WHERE TransID = @transID)
AND TransID > @transID
AND Number IS NOT NULL

答案 1 :(得分:1)

尝试这样的事情(我假设dealID是参数之一):

-- return 1 if there not null numbers for given @dealID and @tranID
CREATE PROC checkNullNumbers (
   @dealID INT,
   @transID INT
)
AS 
BEGIN
   DECLARE 
      @result INT

   SELECT TOP 1 1
   FROM 
    mytable
   WHERE
     dealID = @dealID
     AND transID > @transID
     AND number IS NOT NULL

   SET @result = @@ROWCOUNT

   SELECT @result AS result
END