Sami
Sami

Reputation: 341

Must declare the scalar variable SQL Server?

SELECT CD.CartId
    ,PR.Name
    ,PR.SKU
    ,CD.Quantity
    ,CD.Price
    ,CD.Total
    ,CD.IsAddedFromWidget
    ,CD.WidgetSlotLabel
    ,CD.AddToCartDate
    ,CO.UpdatedDate AS [CheckoutDate]
    ,CD.PurchaseDate {from [Tracking].[CartDetail] CD
INNER JOIN [Tracking].[Cart] C ON CD.CartId = C.Id
INNER JOIN [Tracking].[Product] PR ON CD.ProductId = PR.Id
INNER JOIN [Tracking].[Checkout] CO ON C.$NODE_ID = CO.$TO_ID
WHERE C.WebsiteId = @Websited
    AND C.STATUS = 20
    AND CD.PurchaseDate >= @FromDate
    AND CD.PurchaseDate <= @ToDate
ORDER BY CD.PurchaseDate DESC
    ,CD.CartId DESC}

However, I am getting the error:

Must declare the scalar variable "@WebsiteID".

Upvotes: 1

Views: 3001

Answers (1)

Brien Foss
Brien Foss

Reputation: 3367

Here is an example of what your declarations might look like.

DECLARE @WebsiteID uniqueidentifier = NEWID()
    ,@FromDate DATETIME = GETDATE() - 1
    ,@ToDate DATETIME = GETDATE()

SELECT CD.CartId
    ,PR.Name
    ,PR.SKU
    ,CD.Quantity
    ,CD.Price
    ,CD.Total
    ,CD.IsAddedFromWidget
    ,CD.WidgetSlotLabel
    ,CD.AddToCartDate
    ,CO.UpdatedDate AS [CheckoutDate]
    ,CD.PurchaseDate
FROM [Tracking].[CartDetail] CD
INNER JOIN [Tracking].[Cart] C ON CD.CartId = C.Id
INNER JOIN [Tracking].[Product] PR ON CD.ProductId = PR.Id
INNER JOIN [Tracking].[Checkout] CO ON C.$NODE_ID = CO.$TO_ID
WHERE C.WebsiteId = @WebsiteID
    AND C.STATUS = 20
    AND CD.PurchaseDate >= @FromDate
    AND CD.PurchaseDate <= @ToDate
ORDER BY CD.PurchaseDate DESC
    ,CD.CartId DESC

Also, it appears to me that @Websited is a typo, so I've used @WebsiteID.

I've also removed the invalid { } braces from your code.

Additionally, the column names $NODE_ID and $TO_ID look a little weird to me. (The usage of $ is what I am talking about).

Upvotes: 3

Related Questions