NorthWind Cursor


Northwind Database’de hangi müşteriler para bazında en çok hangi ürüne ödeyerek satın almışlardır…

IF OBJECT_ID(‘YN’) is not null
TRUNCATE TABLE YN
ELSE
BEGIN
CREATE TABLE YN
(
CID nchar(5),
PID int,
MSM money
)
END

SELECT * INTO #TBL
FROM
(
SELECT c.CustomerID AS CID,p.ProductID AS PID,(MAX(od.UnitPrice*od.Quantity *(1-Discount))) AS MSM
FROM
Orders as o
JOIN
Customers as c on c.CustomerID=o.CustomerID
JOIN
[Order Details] as OD on OD.OrderID=o.OrderID
JOIN
Products as p on p.ProductID=OD.ProductID

GROUP BY c.CustomerID,p.ProductID
) AS TL

DECLARE MXU
CURSOR FOR
SELECT CID,MSM,PID
FROM #TBL
ORDER BY CID

OPEN MXU
DECLARE @ID nchar(5),@MS money,@PI int,@EPI int,@EMS money,@EID nchar(5)
FETCH NEXT FROM MXU INTO @ID,@MS,@PI
SET @EMS=@MS
SET @EID=@ID
SET @EPI=@PI

WHILE @@FETCH_STATUS=0
BEGIN
IF( @EID != @ID)
BEGIN
INSERT INTO YN VALUES (@EID,@EPI,@EMS)
SET @EID=@ID
SET @EMS=@MS
SET @EPI=@PI
END

IF( @EID = @ID AND @EMS<@MS )
BEGIN
SET @EMS=@MS
SET @EPI=@PI
END

FETCH NEXT FROM MXU INTO @ID,@MS,@PI

END
CLOSE MXU
DEALLOCATE MXU
SELECT * FROM YN
ORDER BY CID

DROP TABLE #TBL
TRUNCATE TABLE YN

—————————————————————–

CustomerID ProductID Toplam
———- ———– ———————-
ALFKI               63             878
ANATR             72            348

Reklamlar

Fikriniz varmış,malınız gibi paylaşınız...

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Connecting to %s