2010-12-23 66 views
-1

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

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

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

TnX提前!

维迪奇

回答

1

这个怎么样:

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

TNX的提示答案。你的想法很好,但由于其他一些我没有提到的限制(因为我想保留简单的解释),我必须采取不同的方法。最后,我在临时表中存储了当前的TransID,Max TransID,其中Number <> NULL和MaxTransID用于当前DealID,并在这些值之间进行比较。 – 2010-12-24 13:11:59

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 
+0

Tnx for answer!实际上,这只是存储过程的一部分,但您的想法也很有用。在我之前的评论中我解释了我的解决方案 – 2010-12-24 13:22:53