주어진 기간 동안 보고서를 표시하는 작업 절차가 있습니다. PROC 아래 시간의 주어진 기간에 대한 모든 예약을 찾아 이제 우리는 매개 변수를 @IncludeCancelledBooking 필터 를 추가 할조건부 그룹을 사용할 때
CREATE PROCEDURE [dbo].[GetSummaryOverviewReport] (
@StartDate SMALLDATETIME = NULL
,@EndDate SMALLDATETIME = NULL
,@IncludeVAT BIT = 0
,@AddedAfter SMALLDATETIME
,@HasObservation BIT = 0
,@IncludeCancelledBooking BIT = 0
)
AS
BEGIN
SET NOCOUNT ON
BEGIN
SELECT YEAR(StartTime) [Year]
,MONTH(StartTime) [Month]
,COUNT(BookingId) [BookingCount]
,SUM(CASE
WHEN IsVAT = 1
AND @IncludeVAT = 1
THEN (Price/100) * 80
ELSE Price
END) AS TotalPrice
,PaidCount = sum(CASE
WHEN B.PaymentStatus = 'FullyPaid'
THEN 1
ELSE 0
END)
,PaidSum = sum(CASE
WHEN B.PaymentStatus = 'FullyPaid'
THEN (
CASE
WHEN IsVAT = 1
AND @IncludeVAT = 1
THEN (Price/100) * 80
ELSE Price
END
)
ELSE 0
END)
,C.CategoryId
,CategoryName
FROM Category c
LEFT JOIN Booking B ON C.CategoryId = B.CategoryId
WHERE B.AddedDateTime > @AddedAfter
AND ISNULL(B.IsCancelled, 0) = 0
AND (
(
B.StartTime BETWEEN @StartDate
AND @EndDate
)
OR (
B.StartTime BETWEEN @StartDate
AND @EndDate
)
)
AND (
@HasObservation = 0
OR B.PatientID IN (
SELECT PatientID
FROM PatientXObservation O
WHERE ObservationId IN (
1
,2
,4
)
)
)
GROUP BY YEAR(StartTime)
,MONTH(StartTime)
,C.CategoryId
,CategoryName
ORDER BY 1
,2
,CategoryName
END
END
매달 그룹에 대해 보여줍니다. 따라서 사용자는 취소 된 예약을 표시할지 여부를 선택할 수 있습니다. 현재 절차는 취소 된 예약을 무시하고 취소되지 않은 예약 만 표시합니다 ..
레코드를 그룹화하는 동안이 조건을 추가하는 방법을 찾을 수 없습니다. 내가 사용해야와 ISNULL (B.IsCancelled, 0) = 0
이 예약에서 '예약 ISNULL (B.IsCancelled, 0) = 0'은 별칭입니까? 나는 그것이 어떻게 작동하는지 보면서 얻을 수 없었다. 어쨌든 나는 proc을 바꾸고 당신에게 알려줄 것입니다. 고맙습니다! – Developer
그것은 나를 위해 일했습니다. 'AND (@IncludeCancelledBooking <> 0 또는 ISNULL (B.IsCancelled, 0) = 0)' – Developer