I was trying to add Column name MISC4 from PRD1.JDB.dbo.Customer but it's giving me an error for "column name or number of supplied values does not match table definition".
Posting my script here can someone guide me where I made a mistake?
DECLARE @StartDate DATETIME
DECLARE @EndDate DATETIME
SET @StartDate = DATEADD(day,DATEDIFF(day,0,GETDATE()),-7)
SET @EndDate = DATEADD(day,DATEDIFF(day,0,GETDATE()),0)
CREATE TABLE #TempChanges
(
CUSTNO varchar(50),
ITMCLSS VARCHAR(50),
OLDVALUE varchar(50),
NEWVALUE VARCHAR(50),
CHANGEDATE DATETIME,
CHANGEUSER VARCHAR(50),
MISC4 VARCHAR(50),
ISPROSPECT BIT
)
INSERT INTO #TempChanges
SELECT A.KEYVAL, RIGHT(RTRIM(A.NEWVAL),LEN(RTRIM(A.NEWVAL))-2) AS ITMCLSS, LEFT(A.OLDVAL,1), LEFT(A.NEWVAL,1), A.ADDDATE, A.ADDUSER, 0
FROM tbUDT A
INNER JOIN tbCUST C ON RTRIM(C.CUSTNO) = RTRIM(A.KEYVAL)
WHERE A.TBL = 'ICDISC'
AND A.FLDNAM = 'LEVEL'
AND C.NATION = 1
AND C.MISC4 ='Master Code'
AND A.ADDDATE BETWEEN @StartDate AND @EndDate
CREATE TABLE #TempLynxChanges
(
CustomerPricingLevelID int,
PriceTypeID_Old int,
PriceTypeID_New int,
UpdateDate datetime,
UserName varchar(50)
)
INSERT INTO #TempLynxChanges
SELECT
CAST(REPLACE(REPLACE(PK,'<CustomerPricingLevelID=',''),'>','') AS INT) AS CustomerPricingLevelID,
ISNULL(OldValue,'1'),
NewValue,
UpdateDate,
REPLACE(UserName,'PSP\','')
FROM PRD1.JDB.dbo.Audit
WHERE UpdateDate BETWEEN @StartDate AND @EndDate AND TableName = 'Customer_Pricing_Level' AND FieldName = 'PriceTypeID' AND NewValue IS NOT null
--WHERE UpdateDate BETWEEN @StartDate AND @EndDate AND TableName = 'Customer_Pricing_Level' AND FieldName = 'PriceTypeID' AND NewValue <> null
INSERT INTO #TempChanges
SELECT C.CustomerNumber,
IC.ItemClass,
CASE WHEN O.Name = 'Preferred Price' THEN '1' ELSE RTRIM(REPLACE(O.Name,'Level','')) END,
CASE WHEN N.Name = 'Preferred Price' THEN '1' ELSE RTRIM(REPLACE(N.Name,'Level','')) END,
T.UpdateDate,
T.UserName,
C.MISC4,
C.IsProspect
FROM #TempLynxChanges T
INNER JOIN PRD1.JDB.dbo.Customer_Pricing_Level CPL ON CPL.CustomerPricingLevelID = T.CustomerPricingLevelID
INNER JOIN PRD1.JDB.dbo.Customer C ON C.CustomerID = CPL.CustomerID
INNER JOIN PRD1.JDB.dbo.Product_Item_Class IC ON IC.ItemClassID = CPL.ItemClassID
LEFT OUTER JOIN PRD1.DB.dbo.Product_Price_Type O ON O.PriceTypeID = T.PriceTypeID_Old
LEFT OUTER JOIN PRD1.DB.dbo.Product_Price_Type N ON N.PriceTypeID = T.PriceTypeID_New
AND C.IsNationalAccount = 0
DROP TABLE #TempLynxChanges
CREATE TABLE #CustomerYTDSales
(
CUSTNO varchar(50),
YTDSALES decimal(19,6)
)
CREATE TABLE #CustomerYTDItemClassSales
(
CUSTNO varchar(50),
ITMCLSS varchar(50),
YTDSALES decimal(19,6)
)
INSERT INTO #CustomerYTDSales
SELECT DISTINCT A.CUSTNO, SUM(ISNULL(A.EXTPRICE,0))
FROM vwARDSLS A
INNER JOIN #TempChanges T ON T.CUSTNO = A.CUSTNO
WHERE A.INVDTE BETWEEN DATEADD(YY, DATEDIFF(YY, 0, GETDATE()), 0) AND GETDATE()
GROUP BY A.CUSTNO
INSERT INTO #CustomerYTDItemClassSales
SELECT DISTINCT A.CUSTNO, A.ITMCLSS, SUM(ISNULL(A.EXTPRICE,0))
FROM vwASLS A
INNER JOIN #TempChanges T ON T.CUSTNO = A.CUSTNO AND T.ITMCLSS = A.ITMCLSS
WHERE A.INVDTE BETWEEN DATEADD(YY, DATEDIFF(YY, 0, GETDATE()), 0) AND GETDATE()
GROUP BY A.CUSTNO, A.ITMCLSS
CREATE TABLE ##TempLevels
(
CustomerNumber VARCHAR(50),
ItemClass varchar(50),
OldLevel varchar(50),
NewLevel varchar(50),
DateChanged datetime,
TotalYTDSales decimal(19,2),
YTDSalesForThisItemClass decimal(19,2),
SalesRepForCustomer varchar(50),
ChangedBy varchar(50),
SalesManager varchar(50),
MISC4 VARCHAR(50),
IsProspect bit
)
INSERT INTO ##TempLevels
SELECT DISTINCT
X.CUSTNO as 'Customer Number',
X.ITMCLSS as 'Item Class',
LTRIM(ISNULL(X.OLDVALUE,'1')) AS 'Old Level',
LTRIM(X.NEWVALUE) AS 'New Level',
X.CHANGEDATE AS 'Date Changed',
ISNULL(Y.YTDSALES,0) AS 'Total YTD Sales',
ISNULL(I.YTDSALES,0) AS 'YTD Sales for This Item Class',
CASE WHEN X.ISPROSPECT = 0 THEN C.SALESMN ELSE dbo.f_GetSalesrep(X.CUSTNO, X.CHANGEDATE) END AS 'Sales Rep for Customer',
CASE WHEN X.MISC4 = 0 THEN C.SALESMN ELSE dbo.f_GetSalesrep(X.CUSTNO, X.CHANGEDATE) END AS 'Member Code',
CASE WHEN X.CHANGEUSER = 'WebService' THEN dbo.f_GetSalesrep(X.CUSTNO, X.CHANGEDATE) ELSE X.CHANGEUSER END AS 'Changed By',
dbo.f_GetSalesrepManager(CASE WHEN X.ISPROSPECT = 0 THEN C.SALESMN ELSE dbo.f_GetSalesrep(X.CUSTNO, X.CHANGEDATE) END) AS 'Sales Manager',
X.ISPROSPECT
FROM #TempChanges X
LEFT OUTER JOIN #CustomerYTDSales Y ON Y.CUSTNO = X.CUSTNO
LEFT OUTER JOIN #CustomerYTDItemClassSales I ON I.CUSTNO = X.CUSTNO AND I.ITMCLSS = X.ITMCLSS
LEFT OUTER JOIN tbCUST C ON C.CUSTNO = X.CUSTNO
WHERE LTRIM(ISNULL(X.OLDVALUE,'1')) <> LTRIM(X.NEWVALUE)