2013-12-20 150 views
0

我有存储过程,里面我有选择语句,插入和更新,但在我的select语句中,我想将结果存储在变量中,以便稍后可以访问它在我的更新声明中。如何将结果首先存储在变量中?这是我的选择语句:如何将sql结果存储到sql server 2008中的变量

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 

回答

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 
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 
相关问题