2010-12-15 4 views
0

다음 코드를 가지고 있으며이를 조합하기 위해 union 명령을 사용하고 싶습니다. 마지막 테이블 (12)과 함께 union 명령을 사용하려고했습니다. 감사합니다. 전진.잠시 동안 유니온을 사용하려면 어떻게합니까? (SQL)

DECLARE @COUNTER as int 
SET @COUNTER = 0 
WHILE @COUNTER < 12 
    BEGIN 
    SET @COUNTER = @COUNTER + 1 
SELECT e.Month,e.Code,e.AVERAGE,f.AVERAGE 
FROM (SELECT  @COUNTER as Month,Clients.Clients_Code as Code, AVG(Transactions.Amount_of_indebtedness) as AVERAGE 
    FROM   Account INNER JOIN 
         Clients ON Account.Account_Number = Clients.Account_Number INNER JOIN 
         Credit_Card ON Account.Account_Number = Credit_Card.Account_Number INNER JOIN 
         Transactions ON Credit_Card.Credit_Number = Transactions.Credit_Number 
WHERE  (YEAR(Transactions.Date_and_time_of_transaction) = '2009') AND (MONTH(Transactions.Date_and_time_of_transaction) < @COUNTER) 
GROUP BY Clients.Clients_Code)e, 
    (SELECT  @COUNTER as Month,Clients.Clients_Code as Code, AVG(Transactions.Amount_of_indebtedness) as AVERAGE 
    FROM   Account INNER JOIN 
         Clients ON Account.Account_Number = Clients.Account_Number INNER JOIN 
         Credit_Card ON Account.Account_Number = Credit_Card.Account_Number INNER JOIN 
         Transactions ON Credit_Card.Credit_Number = Transactions.Credit_Number 
WHERE  (YEAR(Transactions.Date_and_time_of_transaction) = '2009') AND (MONTH(Transactions.Date_and_time_of_transaction) >= @COUNTER) 
GROUP BY Clients.Clients_Code)f 
WHERE f.Code=e.Code AND e.Month=f.Month AND f.AVERAGE>e.AVERAGE 

END 

답변

2

수 없습니다.

당신이 할 수있는 것은 :

  • #temp 테이블이나 테이블 변수에 결과를 넣은 다음 while 루프를 사용하는
  • 대신 마지막에 그에서 선택 중 하나 CTE를 사용하거나 필요한 숫자를 생성하고 단일 쿼리를 수행하는 임시 테이블.
관련 문제