栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

按列/行排序的值

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

按列/行排序的值

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

更新后的版本:

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进行此查询。请发表评论,我们将对其进行完善。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/637223.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号