Como configurar a variável no MS SQL select

Como posso definir no MS SQL variáveis de selecção, a ideia parece-se com isto:

Declare @var int

SET @var = 0;

Select (if(idid = @var) then sum+1 else sum-1) AS Sum,
   set @var = id 
FROM table

edite com base em comentários.

DECLARE @T TABLE
(
ID  INT PRIMARY KEY,
IDID INT,
SUMM INT 
)

INSERT INTO @T
SELECT 1,1,4 UNION ALL
SELECT 2,1,5 UNION ALL 
SELECT 3,2,6 UNION ALL 
SELECT 4,2,7 UNION ALL 
SELECT 5,3,8

no resultado select preciso:

ID  IDID  SUMM 
--  ----  ----
1   1     4 
2   1     0 
3   2     6 
4   2     0 
5   3     8
Author: Martin Smith, 2011-05-27

3 answers

É isto que estás a tentar fazer?
Declare @var int, @id int
SET @var = 0

SELECT @id = id FROM Table t

if(@id = @var)
BEGIN
    SET @var = @var + 1
END
ELSE
BEGIN
    SET @var = @var - 1
END

print @var
 20
Author: KenL, 2011-05-27 12:23:01

Basta usar o SELECT.

Por exemplo

SELECT @myValue = MyField FROM MyTable WHERE ....
 5
Author: Paul Alan Taylor, 2011-05-27 12:15:03

Embora, como outros, eu realmente não entendo a idéia, a consulta abaixo produz a saída como especificado no post original (que, por sua vez, foi derivado de seu comentário). isto requer SQL Server 2005 ou superior .

WITH cte AS (
  SELECT
    ID,
    IDID,
    SUMM,
    RowNum = ROW_NUMBER() OVER (PARTITION BY IDID ORDER BY ID)
  FROM @T
)
SELECT
  ID,
  IDID,
  SUMM = CASE RowNum WHEN 1 THEN SUMM ELSE 0 END
FROM cte

Basicamente, a coluna de saída SUMM contém SUMM da tabela original se esta for a primeira ocorrência de IDID como ordenado por ID, caso contrário a coluna contém 0.

Não sei a que distância está do que és. depois, mas talvez te ajude a explicar melhor o teu problema.
 5
Author: Andriy M, 2011-05-27 15:42:12