Reputation: 2593
I'm trying to execute this SQL command in the VS Query Builder:
INSERT INTO DATA_TEMP (ITEM, Q1, Q2, Q3, Q4, TOTAL)
SELECT DISTINCT
DATA_2.ITEM,
(SELECT AMOUNT AS Expr1
FROM DATA
WHERE (QTR = 1) AND (DATA_2.ITEM = ITEM) AND (FY = @fy)
AND (BU = @bu) AND (PERIOD = @per)) AS Q1,
(SELECT AMOUNT AS Expr1
FROM DATA AS DATA_3
WHERE (QTR = 2) AND (DATA_2.ITEM = ITEM) AND (FY = @fy)
AND (BU = @bu) AND (PERIOD = @per)) AS Q2,
(SELECT AMOUNT AS Expr1
FROM DATA AS DATA_3
WHERE (QTR = 3) AND (DATA_2.ITEM = ITEM) AND (FY = @fy)
AND (BU = @bu) AND (PERIOD = @per)) AS Q3,
(SELECT AMOUNT AS Expr1
FROM DATA AS DATA_3
WHERE (QTR = 4) AND (DATA_2.ITEM = ITEM) AND (FY = @fy)
AND (BU = @bu) AND (PERIOD = @per)) AS Q4,
(SELECT SUM(AMOUNT) AS Expr1
FROM DATA AS DATA_3
WHERE (DATA_2.ITEM = ITEM) AND (FY = @fy) AND (BU = @bu)
AND (PERIOD = @per)) AS Total
FROM DATA AS DATA_2 INNER JOIN
DATA AS DATA_1 ON DATA_2.ID = DATA_1.ID
WHERE (DATA_2.ITEM = @item)
Gives me this error:
Error Source: .Net SqlClient Data Provider Error Message: Parameter 3 ([C:\test.MDF].[].[unknown]): The CLR type does not exist or you do not have permissions to access it.
Weird thing is, when I execute the SELECT and INSERT INTO commands individually, it works fine. It also works when I compile the website by the way.
But it doesn't work when using Stored Procedures which is why I wanted to know what's causing this.
Upvotes: 1
Views: 924
Reputation: 5845
The problem most likely is due to a parsing problem.
Try adding the following to your final WHERE clause:
WHERE (DATA_2.ITEM = @item) AND (@fy = @fy) AND (@bu = @bu) AND (@per = @per)
I suspect it gets hung up on parameters within the SELECT portion of the code that are not defined in the final where clause.
Upvotes: 2
Reputation: 64645
You could write this query much simpler:
Insert DATA_TEMP( ITEM, Q1, Q2, Q3, Q4, TOTAL )
Select D2.ITEM
, Min( Case When QTR = 1 Then D1.AMOUNT End ) As Q1
, Min( Case When QTR = 2 Then D1.AMOUNT End ) As Q2
, Min( Case When QTR = 3 Then D1.AMOUNT End ) As Q3
, Min( Case When QTR = 4 Then D1.AMOUNT End ) As Q4
, Sum( AMOUNT ) As Total
From DATA As D1
Join DATA_2 As D2
On D2.ID = D1.ID
Where ITEM = @item
And FY = @fy
And BU = @bu
And PERIOD = @per
Group By D2.ITEM
Granted, this doesn't solve your CLR issue but it might make it simpler to test.
Upvotes: 1