如何在sql server 2008中将sql结果存储到变量中

时间:2013-12-20 01:02:01

标签: sql sql-server tsql

我有存储过程,里面我有select语句,插入和更新但在我的select语句中我希望结果存储在一个变量中,以便我可以在以后的update语句中访问它。如何将结果存储在变量中?这是我的选择声明:

 SELECT 
  REV1 = COUNT(CASE WHEN QTR = 1 AND MAIN_SAT =1 AND ACTIVE_FLAG = 1  THEN 1 END),
  REV2= COUNT(CASE WHEN QTR = 1 AND MAIN_EKL =1 AND ACTIVE_FLAG = 1  THEN 1 END),
  REV3= COUNT(CASE WHEN QTR = 1 AND MAIN_LAM =1 AND ACTIVE_FLAG = 1  THEN 1 END),
  REV4= COUNT(CASE WHEN QTR = 1 AND MAIN_JAC =1 AND ACTIVE_FLAG = 1 THEN 1 END)
  FROM MyTable

此select语句的结果如下所示:

REV1    REV2    REV3   REV4
12       45       87    54

2 个答案:

答案 0 :(得分:2)

您可以创建表变量或单个变量(取决于您的偏好)。带有单独变量的示例:

DECLARE @Rev1 int
DECLARE @Rev2 int
DECLARE @Rev3 int
DECLARE @Rev4 int

SELECT 
@Rev1 = COUNT(CASE WHEN QTR = 1 AND MAIN_SAT =1 AND ACTIVE_FLAG = 1  THEN 1 END),
@Rev2= COUNT(CASE WHEN QTR = 1 AND MAIN_EKL =1 AND ACTIVE_FLAG = 1  THEN 1 END),
@Rev3= COUNT(CASE WHEN QTR = 1 AND MAIN_LAM =1 AND ACTIVE_FLAG = 1  THEN 1 END),
@Rev4= COUNT(CASE WHEN QTR = 1 AND MAIN_JAC =1 AND ACTIVE_FLAG = 1 THEN 1 END)
FROM MyTable

答案 1 :(得分:0)

试一下

这将减少病情并且更加清晰。

DECLARE @Rev1 int
DECLARE @Rev2 int
DECLARE @Rev3 int
DECLARE @Rev4 int
SELECT 
    @Rev1 = SUM(CASE WHEN MAIN_SAT =1 THEN 1 ELSE 0 END),
    @Rev2= SUM(CASE WHEN MAIN_EKL =1 THEN 1 ELSE 0 END),
    @Rev3= SUM(CASE WHEN MAIN_LAM =1 THEN 1 ELSE 0 END),
    @Rev4= SUM(CASE WHEN MAIN_JAC =1THEN 1 ELSE 0 END)
FROM MyTable
WHERE QTR = 1
    AND ACTIVE_FLAG = 1