Наверное нужен курсор - PullRequest
0 голосов
/ 23 декабря 2010

У меня есть одна очевидно простая проблема, но я не могу найти хорошее решение, поэтому я был бы признателен за помощь сообщества.

Допустим, в моей таблице три столбца: DealID, TransID и Number.И скажем, у меня есть 4 строки, значение для DealID одинаково во всех 4 строках, TransID имеет разные значения в каждой строке (и данные упорядочены по возрастанию в этом столбце), а Number имеет некоторое значение в первой строке и NULL во всех остальных строках.

Мой простой вопрос: для точного Trans_Id, как определить в sproc для всех значений Trans_Id больше текущего, все ли значения для числовых NULL?Т.е. я хочу знать, есть ли какое-либо числовое значение, отличное от NULL для любого другого Trans_Id, которое больше текущего значения Trans_Id.

TnX заранее!

Неманья

Ответы [ 2 ]

1 голос
/ 23 декабря 2010

Попробуйте что-то вроде этого (я полагаю, 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
1 голос
/ 23 декабря 2010

Как это:

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