按列行排序的值

按列行排序的值,第1张

按列/行排序的值

我可能不明白您所描述的一切。通过阅读您的问题和其他人的评论,我想这就是您要寻找的:

更新后的版本

with cteOriginal as(    select *, RANK() over (partition by [SortOrder] order by id asc) as [NonUniqueSortOrder]    from    (        select id, A as [value], 1 as [SortOrder]        from #original        where A is not null        union all        select id, B as [value], 2 as [SortOrder]        from #original        where B is not null        union all        select id, C as [value], 3 as [SortOrder]        from #original        where C is not null        union all        select id, D as [value], 4 as [SortOrder]        from #original        where D is not null    ) as temp)select [value]from cteOriginalwhere id = (select MIN(tmp.id) from cteOriginal tmp where tmp.value = cteOriginal.value)order by ((([NonUniqueSortOrder] - 1) * 4) + [SortOrder])

我通过选择具有最小id(min(id))的重复值来摆脱重复值。您可以将其更改为使用max(id)。

初始版本:

with cteOriginal as(    select *, RANK() over (partition by [column] order by id asc) as [NonUniqueSortOrder]    from    (        select id, A as [value], 'A' as [Column], 1 as [SortOrder]        from #original        where A is not null        union all        select id, B as [value], 'B' as [Column], 2 as [SortOrder]        from #original        where B is not null        union all        select id, C as [value], 'C' as [Column], 3 as [SortOrder]        from #original        where C is not null        union all        select id, D as [value], 'D' as [Column], 4 as [SortOrder]        from #original        where D is not null    ) as temp)select [value]from cteOriginalorder by ((([NonUniqueSortOrder] - 1) * 4) + [SortOrder])

顺便说一句,我正在使用mssql 2005进行此查询。请发表评论,我们将对其进行完善。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5643054.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存