回答

收藏

具有不同数据集的UNIOR的ORDER BY(T-SQL)

技术问答 技术问答 213 人阅读 | 0 人回复 | 2023-09-14

我有一个查询,它UNION这是两个有点相似的数据集,但它们都有其他列中不存在的列(即结果中的列)NULL值UNION。); d1 Y7 v0 M5 A7 e" t; a
问题是,我需要ORDER使用只存在于一个或另一个集合中的列来生成数据,以便以友好的格式为软件端获取数据。
8 {7 X0 l/ s4 |* x+ _0 T例如: Table1    具有字段ID,Cat,Price。表2    具有字段ID,Name,Abbrv。该ID两表之间的字段是公共的。3 e' r* v0 K/ S
我的查询看起来像这样:9 s4 o2 F8 c1 U; {2 Z) ^
SELECT t1.ID,t1.Cat,t1.Price,NULL as Name,NULL as Abbrv FROM t1 UNION SELECT t2.ID,NULL as Cat,NULL as Price,t2.Name,t2.Abbrv FROM t2 ORDER BY Price DESC,Abbrv ASC这ORDER BY这是我被困住的地方。数据如下:
0 H- v5 Q. N1 E6 E2 C100   Balls     1.533                       2000                                                  20000                                                                                            Bubbles   1.2444                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              RedBall    101RB                                                                                                                                                                                    BlueBall   102BB   200                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      RedWand    201RW   200                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      BlueWand   202BW…但我希望它看起来像这样:8 _- P5 B$ Q9 g; p9 J0 C
100   Balls     1.533353                                                                                                                                                                                                                                                                                                                                                                                                                                                         RedBall    101RB                                                                                                                                                                                    BlueBall   102BB   200   Bubbles   1.24                       200                     RedWand    201RW   200                     BlueWand   202BW我希望这是可以的T-SQL中完成。
; u6 Z" Y5 H, N2 {                                                               
# j. v. k% X% X2 M4 F1 s/ a    解决方案:                                                                / H( _1 @8 F) R0 m9 p
                                                                Select ID,Cat,Price,Name,AbbrvFrom(SELECT t1.ID,t1.Cat,t1.Price,t1.Price AS SortPrice,NULL as Name,NULL as Abbrv FROM t1UNIONSELECT t2.ID,NULL as Cat,NULL as Price,t1.Price as SortPrice,t2.Name,t2.Abbrv    FROM t2   inner join t1 on t2.id = t1.id) t3ORDER BY SortPrice DESC,Abbrv ASC您必须知道表2中的数据已链接到表1并以某种方式共享价格。abbrv中的Null它将排在前面,因此无需创建SortAbbrv列。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则