【问题标题】:Dynamic sql pivot join动态 sql 枢轴连接
【发布时间】:2016-12-02 14:11:01
【问题描述】:

我正在尝试实现动态 sql 数据透视,其中两个表连接在一起,一组图像成为它们自己的列。

表 1:

house_id     name    value
1            image   image1.jpg
1            image   image2.jpg
1            image   image3.jpg

表 2:

id      updated_at     house_name
1       2016-12-02     House 1

我希望它看起来像这样:

house_id     updated_at    house_name    image1         image2        image3
1            2016-12-02    House 1       image1.jpg     image2.jpg    image3.jpg

我想通过动态 sql 数据透视来实现这一点,但我无法让它工作(即使没有连接):

DECLARE @cols  AS NVARCHAR(MAX)='';
DECLARE @query AS NVARCHAR(MAX)='';

SELECT @cols = @cols + QUOTENAME(name) + ',' FROM (select distinct name from #table1 ) as house_meta
select @cols = substring(@cols, 0, len(@cols)) --trim "," at end

set @query = 
'SELECT * from 
(
    select house_id, name, value from #table1
) src
pivot 
(
    max(value) for name in (' + @cols + ')
) piv'

execute(@query)

【问题讨论】:

    标签: sql dynamic pivot


    【解决方案1】:

    image 数据类型无法使用聚合运算符,所以这里不能使用PIVOT

    【讨论】:

    • 有什么方法可以在不使用枢轴的情况下完成此任务?
    • 视情况而定。如果任务只是一次迁移数据的操作,那么我会尝试创建一个新表,然后逐行填充它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多