微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

TSQL ORDER-BY与UNION的不同数据集

我有一个查询,UNION有两个有点类似的数据集,但是它们都有一些不存在于另一个列中的列,即列中在所生成的UNION中具有NULL值. UNION的目的是以软件方面的友好格式获取数据.

问题是,我需要使用只存在于一个或另一个集合中的那些列ORDER生成的数据.

例如:Table1具有字段ID,Cat,Price.表2具有字段ID(与表1相同),Name,Abbrv.

我的查询看起来像这样:

SELECT t1.ID,t1.Cat,t1.Price,NULL as Name,NULL as Abbrv FROM t1
联盟
SELECT t2.ID,NULL as Cat,NULL as Price,t2.Name,t2.Abbrv FROM t2
ORDER BY价格DESC,Abbrv ASC

ORDER BY是我被卡住的地方.数据如下所示:

100 —球—– 1.53 ———————-
200 — —气泡1.24 ———————-
100 ——————— RedBall —- 101RB–
100 ———————蓝色圆球— 102BB–
200 ——————— RedWand —- 201RW–
200 ——————— BlueWand — 202BW–

但我希望它看起来像这样:

100 —球—– 1.53 ———————-
100 ——————— RedBall —- 101RB–
100 ———————蓝色圆球— 102BB–
200 — —气泡1.24 ———————-
200 ——————— RedWand —- 201RW–
200 ——————— BlueWand — 202BW–

(如果那些很难阅读,道歉 – 不知道怎么样显示一张桌子)

记住这是一个非常倾倒的例子,谚语“使用加入!”答案是不适用的(即我已经知道如何加入他们,但这不是我想要的最终结果).

很可能,实现这一目标的唯一方法是在从数据层返回时操纵软件中的数据 – 如果是这样的话.但我希望可以在Tsql中完成.

解决方法

Select ID,Price,Abbrv
From
(SELECT t1.ID,t1.Price AS SortPrice,NULL as Abbrv 
FROM t1
UNION
SELECT t2.ID,t1.Price as SortPrice,t2.Abbrv 
   FROM t2
   inner join t1 on t2.id = t1.id
) t3
ORDER BY SortPrice DESC,Abbrv ASC

不知怎的,你必须知道表2中的数据链接到表1并分享价格.由于abbrv中的Null将先到,所以不需要创建一个SortAbbrv列.

原文地址:https://www.jb51.cc/mssql/81550.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐