1

このクエリは機能しますが、方法がわからない追加のことを行う必要があります。LEFT JOIN セクションにレコードが返されない場合、クエリで "activityTempBookings" フィールドに 0 を入力する必要があります。これは、過去にあった可能性がある場合でも、将来の「tempReserveDate」でアクティビティがない古いデータを上書きするためです。

    UPDATE P
    SET activityTempBookings = t.bookingTempTotal
    FROM [LeisureActivities].[dbo].[activities] AS P 
    LEFT JOIN (
        SELECT tempActivityID, SUM(tempPlaces) bookingTempTotal 
            FROM [LeisureActivities].[dbo].[tempbookings] 
            WHERE tempReserveDate > GETDATE () 
            GROUP BY tempActivityID
    )t
    ON t.tempActivityID = p.activityID

どんな助けでも大歓迎です - 私が失礼だと思わないでください、しかし私は月曜日まで返事をしないかもしれません.

ありがとう。

4

2 に答える 2

3

COALESCE基本的に、引数の中で最初の非 null 式を返す use 。

UPDATE P
SET    activityTempBookings = COALESCE(t.bookingTempTotal, 0)
FROM   [LeisureActivities].[dbo].[activities] AS P 
       LEFT JOIN 
       (
           SELECT tempActivityID, 
                  SUM(tempPlaces) bookingTempTotal 
           FROM   [LeisureActivities].[dbo].[tempbookings] 
           WHERE  tempReserveDate > GETDATE () 
           GROUP  BY tempActivityID
       ) t ON t.tempActivityID = p.activityID
于 2013-03-22T17:32:47.493 に答える
0

ISNULL を使用する


UPDATE P
    SET activityTempBookings = ISNULL(t.bookingTempTotal,0)
    FROM [LeisureActivities].[dbo].[activities] AS P 
    LEFT JOIN (
        SELECT tempActivityID, SUM(tempPlaces) bookingTempTotal 
            FROM [LeisureActivities].[dbo].[tempbookings] 
            WHERE tempReserveDate > GETDATE () 
            GROUP BY tempActivityID
    )t
    ON t.tempActivityID = p.activityID
于 2013-03-22T17:36:34.350 に答える