当前位置: 首页 > 面试题库 >

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

端木高邈
2023-03-14
问题内容

我有一个查询,它UNION是两个有点相似的数据集,但是它们都有一些其他列中不存在的列(即,结果中的列具有NULL值UNION。)

问题是,我需要ORDER使用仅存在于一个或另一个集合中的那些列来生成数据,以便以友好的格式为软件端获取数据。

例如: Table1 具有字段ID, Cat, Price表2 具有字段ID, Name, Abbrv。该ID字段在两个表之间是公共的。

我的查询看起来像这样:

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就是我被困住的地方。数据如下所示:

100   Balls     1.53                       
200   Bubbles   1.24                       
100                     RedBall    101RB   
100                     BlueBall   102BB   
200                     RedWand    201RW   
200                     BlueWand   202BW

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

100   Balls     1.53                       
100                     RedBall    101RB   
100                     BlueBall   102BB   
200   Bubbles   1.24                       
200                     RedWand    201RW   
200                     BlueWand   202BW

我希望这可以在T-SQL中完成。


问题答案:
Select ID, Cat, Price, Name, Abbrv
From
(SELECT t1.ID, t1.Cat, t1.Price, t1.Price AS SortPrice, NULL as Name, NULL as Abbrv 
FROM t1
UNION
SELECT 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
) t3
ORDER BY SortPrice DESC, Abbrv ASC

您必须以某种方式知道表2中的数据已链接到表1并共享价格。由于abbrv中的Null将排在最前面,因此无需创建SortAbbrv列。



 类似资料:
  • 问题内容: 我正在使用ajax加载数据并在DataTable中动态生成列名。我的数据表具有不同的列数,具体取决于用户的选择。(有一个下拉列表)。 例如,下拉列表中有2个选项,即“ 南部省” 和“ 北部省” 。 南部省 表有4列, 北部省 表有6列。 场景1 第一个用户选择具有4列的 Southern Province 。然后它生成的表没有错误,但是在此之后,如果用户选择具有6列的 Northern

  • 我正在开发一个应用程序,它将生成一些图表,我正在使用chartjs来绘制它们。 我面临的问题是:图表将用动态数据生成。应用程序最多可以生成9个数据集,很少会有相同的大小。当数据集大小不匹配时,如何使图表提前或填充值? 我在stackoverflow甚至在chartjs github页面上看到了一些例子,但它们对我不起作用。 这是我目前所拥有的一个示例:https://jsfidle.net/cam

  • 我正在使用的数据库有许多具有相同列但(显然)具有不同表名的表(不是我设计的)。例如(这些是数据库表名): 有没有可能用JPA和Hibernate将这些映射到一个Java类实体?类的名称是,然后在使用它时传入例如,以便对象使用表? 还是只使用普通的、普通的Java对象来完成这样的任务更好? 谢谢你!

  • 问题内容: 我写了这个查询: 返回结果: 这正是我想要的结果。我的问题是,“援助”中不会总是有四个不同的值。是否可以重写此查询(或使用存储过程),以使“ a *”列的数量取决于“援助”中有多少个不同的值? 问题答案: 您将需要使用“动态数据透视表”来获取所需的列列表。这将首先检索列的列表,然后旋转该列表。类似于以下内容:

  • 问题内容: 我想从具有不同列名的两个表中返回一行结果集,每个表中的每一行一行。 结果应如下所示,空格可以为null,第二半的team_id来自coach_id: 这是模式: 试过这个,但还没真正接近: 问题答案: nulnullry这

  • 在Azure Blob容器中,有具有不同列集的文件。 谢谢 穆罕默德