如何使用相同的ID将数据聚合到视图中

时间:2010-02-10 20:21:15

标签: sql sql-server

我有一个现有视图,它基于聚合具有相同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。

我在这里根据这两个问题的评论创建了一个新问题。我意识到我需要一个视图。

Aggregate data from view as UDF to use in select statement

error with sql function creation

2 个答案:

答案 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