首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >透视获取EAV数据

透视获取EAV数据
EN

Stack Overflow用户
提问于 2011-09-10 02:12:43
回答 2查看 913关注 0票数 3

我有一个EAV表(每一行都有简单的键/值),我需要从两行中提取‘值’,并将它们连接到具有单列的单行中。我似乎不能通过的部分,我只是有轴心直。有人能帮我解决这个问题吗?

代码语言:javascript
复制
Declare @eavHelp Table
(
    [Key]         VARCHAR (8)       NOT NULL,
    [Value]       VARCHAR (8)      NULL
)
Insert Into @eavHelp Values ( 'key1' , 'aaa' )    
Insert Into @eavHelp Values ( 'key2' , 'bbb' )

Select * From @eavHelp 
Pivot
(   Min( [Value] ) 
    For [Value] in ( hmm1 , hmm2 )
)
as Piv Where [Key] = 'key1' or [Key] = 'key2'

这就是说:

代码语言:javascript
复制
Key      hmm1     hmm2
-------- -------- --------
key1     NULL     NULL
key2     NULL     NULL

但我想做的是:

代码语言:javascript
复制
hmmmX
-----
aaa;bbb
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-09-10 02:25:40

并不真的需要旋转。

编辑以添加新要求(;分隔符):

代码语言:javascript
复制
SELECT hmmmX = STUFF((SELECT ';' + [Value] FROM @eavHelp 
    WHERE [Key] IN ('key1', 'key2')
    FOR XML PATH(''), TYPE).value('.', 'VARCHAR(MAX)'), 1, 1, '');
票数 4
EN

Stack Overflow用户

发布于 2012-10-13 23:33:00

代码语言:javascript
复制
Declare @eavHelp Table 
( 
    [Key]         VARCHAR (8)       NOT NULL, 
    [Value]       VARCHAR (8)      NULL 
) 
Insert Into @eavHelp Values ( 'key1' , 'aaa' )     
Insert Into @eavHelp Values ( 'key2' , 'bbb' ) 

declare @concat nvarchar(max); select @concat =''
select @concat =@concat+case when len(@concat)>0 then '; ' else '' end + value from    @eavHelp
select @concat
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7365742

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档