私はこれを解決したと思ったが、戻ってきた!! リファクタリング中のストアド プロシージャでこの最後のカーソルを削除しようとしています。
私の問題は、#UTM2 テーブルにリンクしてカーソルを削除し、すべてを 1 つのセットに戻すためにカーソルにロードされたテーブルの列がないことです。これに対する回避策はありますか???
DECLARE @ChannelId INT,
@URLSignature Varchar(30),
@RawSQL VARCHAR(2000),
@SQLQuery VARCHAR(4000),
@ThisUTMId BIGINT
DECLARE cursChannels CURSOR STATIC
FOR
SELECT ChannelId, URLSignature, RawSQL
FROM dbo.TrackingChannel_tbl (NOLOCK)
WHERE ProcessVisitDate = 1
IF @URLSignature <> ''
SET @SQLQuery = @SQLQuery + 'AND u.RawURLRequest like ''%' + @URLSignature + '%'' '
IF @RawSQL <> ''
SET @SQLQuery = @SQLQuery + @RawSQL
EXEC (@SQLQuery)
INSERT INTO dbo.TrackingChannelDailyTotal_tbl
(ChannelId, TrackingDate, Conversions, TotalMargin)
SELECT @ChannelId, @ConvDate, Count(u1.trpUTMID), IsNUll(SUM(TotalMargin),0)
FROM #UTM u1
JOIN #UTM2 u2
ON u1.TRputmid = u2.trputmid
FETCH cursChannels INTO @ChannelId, @URLSignature, @RawSQL
修正、#temp テーブルの作成方法
CREATE TABLE #UTM
(trpUTMID BIGINT PRIMARY KEY,
TotalMArgin MONEY,
RawURLRequest Varchar(2000),
Keywords VARCHAR(1000), VisitDate DATETIME,
RefererURL VARCHAR(2000))
INSERT INTO #UTM (trputmid, TotalMargin)
SELECT trpUTMID, SUM(b.TotalMArgin)
FROM TrackingConversion_tbl c (NOLOCK)
JOIN Booking_tbl b (NOLOCK)
ON c.BookingId = b.BookingId
WHERE
c.bookedDate > @convDate
GROUP BY trputmid
UPDATE u
SET RawURLRequest = v.RawURLRequest,
Keywords = v.Keywords,
VisitDate = v.VisitDate,
RefererURL = v.RefererURL
FROM #UTM u,
TrackingVisit_tbl (NOLOCK) v
WHERE v.trpUTMID = u.trpUTMId
結果を出すことを望んで
ChannelId TrackingDate Conversions TotalMargin
--------- ----------------------- ----------- -----------
1 2012-03-14 00:00:00.000 0 0.00
2 2012-03-14 00:00:00.000 22 557.0296
3 2012-03-14 00:00:00.000 0 0.00
現在の日付または 41 チャネルまでの各日