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

前端之家收集整理的这篇文章主要介绍了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列.

猜你在找的MsSQL相关文章