我有一个现有视图,它基于聚合具有相同product_id的选项名称,以下列格式返回数据。视图名称为“vProdOptions”
option_name product_id
XSMALL (2-6) 17854
SMALL (6-10) 17854
MEDIUM (10-14) 17854
LARGE 18232
如何在这样格式的聚合视图中返回此数据?
OPTIONS_AVAIL Product_ID
XSMALL (2-6), SMALL (6-10), MEDIUM (10-14) 127182
SMALL (6-10), MEDIUM (10-14) 166382
我正在使用MS SQL 2k5。
我在这里根据这两个问题的评论创建了一个新问题。我意识到我需要一个视图。
答案 0 :(得分:1)
透视不是一种非常有效的SQL方法。就个人而言,我会单独留下你的观点并通过应用程序转动数据。
答案 1 :(得分:1)
您可以选择不同的产品,并在计算一系列选项的函数上cross apply
:
select *
from (select distinct product_id from @t) a
cross apply (
select option_name + ', ' as [text()]
from @t b
where a.product_id = b.product_id
for xml path('')
) c ( Options )
-->
product_id Options
17854 XSMALL (2-6), SMALL (6-10), MEDIUM (10-14),
18232 LARGE,
创建示例的代码:
declare @t table (option_name varchar(30), product_id int)
insert @t select 'XSMALL (2-6)', 17854
union all select 'SMALL (6-10)', 17854
union all select 'MEDIUM (10-14)', 17854
union all select 'LARGE', 18232