2014-04-12 3 views
1

enter image description here여러 개의 수익을 조건으로 합하는 방법은 무엇입니까?

내 스크립트 :

USE Cars 

DECLARE @TotalMoneyForService money; 
DECLARE @CurrentDate date; 
DECLARE @DateCompleted date; 

SET @CurrentDate = GETDATE(); 

SET @DateCompleted = (SELECT DateCompleted 
    FROM ServiceType 
    WHERE DateCompleted = @CurrentDate); 

SET @TotalMoneyForService = (SELECT SUM(Price) 
    FROM ServiceType  
    WHERE DateCompleted = @CurrentDate); 

PRINT @CurrentDate; 
IF @TotalMoneyForService > 0 AND @DateCompleted = @CurrentDate  
    PRINT 'Today Total Car Maintenance is $' + 
    CONVERT(varchar,@TotalMoneyForService,1); 
ELSE  
    PRINT 'No Car Expense Maintenance Today' ; 

1 CASE 출력 :

 
2014-04-12 
Today Total Car Maintenance is $43.00 

2 CASE 출력 : 나는 두 개의 세포를해야합니다 필드 DateCompleted에 말할 수있는 경우 나는 여기에 문제가있다 같은 날짜, 2014-04-12라고 말하면 결과는 다음과 같습니다.

메시지 512, 수준 16, 상태 1, 줄 9
하위 쿼리가 두 개 이상의 값을 반환했습니다. 하위 쿼리가 =,! =, <, < =,>,> = 또는 하위 쿼리가 표현으로 사용되는 경우에는 허용되지 않습니다. 2014년 4월 12일 없음 자동차 비용없는 유지 관리 오늘

내가 DateCompleted 경우가 나는 여러 반환을 이해 53.00 해야 두 번째 경우에, 그래서 현재 날짜로 = 가격 필드의 합계를 얻기 위해 원하고있다

내 @DateCompleted 배열 같은 두 결과가 포함되어 있습니까? 나는 조금 혼란 스럽다. 누군가 나를 안내 할 수 있고 내가 잘못하고있는 것을 말해 준다면 정말로 감사 할 것이다. 감사합니다.

답변

0

변화에게 코드 줄을

SET @DateCompleted = (SELECT top 1 DateCompleted 
    FROM ServiceType 
    WHERE DateCompleted = @CurrentDate); 
0

당신이 시도 할 수 :

DECLARE @TotalMoneyForService money; 
DECLARE @CurrentDate date; 
DECLARE @DateCompleted date; 

SET @CurrentDate = CONVERT(DATETIME,CONVERT(VARCHAR(12), GETDATE())); 

;with TotMaint 
AS 
(
SELECT 
    SUM(Price) AS Price 
FROM 
    ServiceType 
where 
    CONVERT(DATETIME,CONVERT(VARCHAR(12), DateCompleted)) = @CurrentDate 
) 
select 
    case when Price is null THEN 'No Car Expense Maintenance Today' 
    else 'Today Total Car Maintenance is $' + convert(varchar(10), Price) 
    end as [Answer] 
from 
    TotMaint 
관련 문제