如何将变量设置为Ms Sql select

问题描述

| 如何在MS sql中设置选择变量,想法如下所示:
Declare @var int

SET @var = 0;

Select (if(idid = @var) then sum+1 else sum-1) AS Sum,set @var = id 
FROM table
根据评论进行编辑。
DECLARE @T TABLE
(
ID  INT PRIMARY KEY,IDID INT,SUMM INT 
)

INSERT INTO @T
SELECT 1,1,4 UNION ALL
SELECT 2,5 UNION ALL 
SELECT 3,2,6 UNION ALL 
SELECT 4,7 UNION ALL 
SELECT 5,3,8
在选择结果中,我需要:
ID  IDID  SUMM 
--  ----  ----
1   1     4 
2   1     0 
3   2     6 
4   2     0 
5   3     8
    

解决方法

        这是您要做什么?
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
    ,        只需使用SELECT。 例如
SELECT @myValue = MyField FROM MyTable WHERE ....
    ,        尽管和其他人一样,我并没有真正的主意,但下面的查询会产生原始帖子中指定的输出(该帖子又从您的评论中得出)。这需要SQL Server 2005或更高版本。
WITH cte AS (
  SELECT
    ID,IDID,SUMM,RowNum = ROW_NUMBER() OVER (PARTITION BY IDID ORDER BY ID)
  FROM @T
)
SELECT
  ID,SUMM = CASE RowNum WHEN 1 THEN SUMM ELSE 0 END
FROM cte
基本上,如果按“ 9”的顺序第一次出现“ 8”,则“ 6”输出列包含原始表中的“ 6”,否则该列包含“ 10”。 不知道离您要走的路有多远,但是也许它将帮助您更准确地解释您的问题。     ,        使用测试数据时,我习惯于违反参照完整性。但这对于在我完成脚本测试后恢复具有参照完整性的数据很有用:
DECLARE @foreign_id INTEGER;
   SET @foreign_id = (SELECT TOP 1 (FK_column) FROM (FK_table));
-- To confirm the value is what you want it to be
SELECT @foreign_id;
现在,我可以在完成后将数据多次插入回去,使用此值可以确保:
-- Referential integrity check:
SELECT (FK_column) FROM (FK_table)
   WHERE (FK_column) NOT IN
   (SELECT (PK_column) FROM (PK_table));
没有返回任何值。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...