我想在同一个参数中传递多个品牌名称。我试图使用TVP来解决这个问题但是有一些问题。
以下是示例代码:
CREATE TYPE BRAND AS TABLE
(
BRANDName NVARCHAR(MAX) NOT NULL
)
create proc SALES @Brandparameter BRAND READONLY AS
create table #sales(Categories,Volume)
insert into #sales(Categories,Volume)
select categories,sum(case when Brand=@Brandparameter then [volume] end)
from sales_table
group by categories
exec SALES @BRANDNAMES
DECLARE @BRANDNAMES AS BRAND
INSERT INTO @BRANDNAMES
VALUES('Brand1'),('Brand2')
执行该程序时,会出现以下错误:
必须声明标量变量" @ BRANDNAMES"
这是sales_table
_______________________________
| Categories | Brand | volume |
|-----------------------------|
| Category 1 | Brand1| 1000 |
| ....... | ..... | ..... |
|_____________________________|
答案 0 :(得分:0)
由于@Brandparameter
是一种表格类型,你必须以与使用表格相同的方式使用它(即从中选择SELECT),所以你需要这样的东西:
SELECT Categories,
SUM(CASE WHEN Brand IN (SELECT BRANDName FROM @Brandparameter) THEN [Volume] END)
FROM sales_table
GROUP BY Categories;