2016-08-08 3 views
0

데이터 결과를 쿼리에 저장하기 위해 두 개의 변수를 구현해야합니다. 변수에 다음 쿼리의 값을 저장하는 방법은 무엇입니까? SQL Server

CampaingsWithInProcessStatus

내가에 열을 추가 할 필요가 | 위치 | | 트럭 | TotalOfCampaings | CampaingsWithCompleteStatus

:

SELECT * FROM 
(SELECT location AS Location, COUNT(*) AS Trucks FROM Truck GROUP BY location) loc 
OUTER APPLY 
(
    SELECT 
     COUNT(*) AS TotalOfCampaings, 
     SUM(CASE WHEN cc.campaing_status = 'Complete' THEN 1 ELSE 0 END) AS CampaingsWithCompleteStatus, 
     SUM(CASE WHEN cc.campaing_status = 'InProcess' THEN 1 ELSE 0 END) AS CampaingsWithInProcessStatus 
    FROM CampaingControl cc INNER JOIN Truck t ON cc.vin = t.vin 
    WHERE t.location = loc.location 
) stat 

이 쿼리는 다음 표는 :

나는 그가 쿼리 다음이 끝, 새로운 열에서 나는 완전한 상태로 campaings의 퍼센트를 얻을 필요가있다, 나는 다음과 같이하려고 노력했다 :

% = (CampaingsWithCompleteStatus/TotalOfCamapings) * 100

하지만 그 일을하는 쿼리의 값을 저장하는 방법을 모릅니다. 이 같은

답변

0

뭔가 :

SELECT 
    loc.Location, 
    loc.Trunks, 
    stat.TotalOfCampaings, 
    stat.CampaingsWithCompleteStatus, 
    stat.CampaingsWithInProcessStatus, 
    (1.0 * stat.CampaingsWithCompleteStatus /stat.TotalOfCampaings) * 100 as [Percent] 
FROM 
(SELECT location AS Location, COUNT(*) AS Trucks FROM Truck GROUP BY location) loc 
OUTER APPLY 
(
    SELECT 
     COUNT(*) AS TotalOfCampaings, 
     SUM(CASE WHEN cc.campaing_status = 'Complete' THEN 1 ELSE 0 END) AS CampaingsWithCompleteStatus, 
     SUM(CASE WHEN cc.campaing_status = 'InProcess' THEN 1 ELSE 0 END) AS CampaingsWithInProcessStatus 
    FROM CampaingControl cc INNER JOIN Truck t ON cc.vin = t.vin 
    WHERE t.location = loc.location 
) stat 
+0

안녕하세요, 저는 당신의 도움을 주셔서 감사합니다,하지만 난 테이블에 값을 삽입 할 때 %의 열은 항상 내가 기능을 사용하기 때문에이 둘 다 값이 정수 supose 0 – TimeToCode

+0

보여줍니다 SUM, 아니면 float로 변환해야합니까? 나 do not는 알고있다 – TimeToCode

+1

편집 : 그들이 int 인 것에 따라 결과는 int 도다. 그것을 해결하려면 1.0을 곱하여 트릭을 사용하십시오. –

관련 문제