1

相対的な投稿をいくつか見てきましたが、それらを自分の状況に適用する方法がわかりません。

SELECT [LeisureActivities].[dbo].[activities].[activityID],
       [LeisureActivities].[dbo].[activities].[activityName],
       [LeisureActivities].[dbo].[activities].[activityDate],
       [LeisureActivities].[dbo].[activities].[activityPlaces],
       [LeisureActivities].[dbo].[activities].[activityPrice],
       SUM([LeisureActivities].[dbo].[bookings].[bookingPlaces]) AS 'bookingTotal',
       SUM([LeisureActivities].[dbo].[tempbookings].[tempPlaces]) AS 'tempPlacesReserved'

FROM   [LeisureActivities].[dbo].[activities],
       [LeisureActivities].[dbo].[bookings],
       [LeisureActivities].[dbo].[tempbookings]

WHERE ([LeisureActivities].[dbo].[activities].[activityID]=[LeisureActivities].[dbo].[bookings].[activityID] 
    AND [LeisureActivities].[dbo].[activities].[activityID]=[LeisureActivities].[dbo].[tempbookings].[tempActivityID]) 
    AND [LeisureActivities].[dbo].[activities].[activityDate] > GetDate ()

GROUP BY [LeisureActivities].[dbo].[activities].[activityID],
         [LeisureActivities].[dbo].[activities].[activityName],
         [LeisureActivities].[dbo].[activities].[activityDate],
         [LeisureActivities].[dbo].[activities].[activityPlaces],
         [LeisureActivities].[dbo].[activities].[activityPrice];

ご覧のとおり、これは 、activitiesbookingsおよびの 3 つのテーブルを参照していますtempbookingstempbookingsテーブルには日時データ型を含むフィールドも含まれていtempReservedDateます。tempPlaces の SUM 計算が必要なのtempReservedDateは、将来のレコードを合計し、過去のレコードを単に無視するためだけです (表示してアクティビティを既に制御している方法と同様)将来の日付を持つもののみ) SUM は、これらを各アクティビティごとにグループ化する必要もあります。

「WHERE」セクションに次のようなものを入れる必要があると思います

[LeisureActivities].[dbo].[tempbookings].[tempReservedDate] > GetDate ()

にのみ適用する必要があるため、クエリ全体に適用せずに機能させるためにどこに置くべきかわかりませtempPlaces

私が何を意味するのかを説明できたことを願っていますが、それが意味をなさないかどうか尋ねてください.これらのクエリを使用する場合、この特定の形式で実行する必要があります。

助けていただければ幸いです。

4

1 に答える 1

1

select句に条件付きの合計が必要です。

SUM(case when [tempbookings].[tempReservedDate] > GetDate()
                then tempBookings.tempPlaces
           end) as FutureTempPlaces

また、コードをより適切にフォーマットし、適切なエイリアス(tbforなどtempBookings)を使用する方法を学ぶ必要があります。

于 2013-03-21T14:39:33.343 に答える