【问题标题】:How to sort a table in SQL?如何在 SQL 中对表进行排序?
【发布时间】:2015-07-20 07:27:05
【问题描述】:

我有下表:

table 1
Row   volume   part 1   part 2   part 3 
1      520     2        5        3 
2     1020     3        6        7 
3      100     1        9        2 
4      200     9        2        1 

现在我想要上面的表(表1),下面的条件会排序: 首先,大部分时间是由第一张唱片中的节目量制作和安排的。然后,按第 1 部分、第 2 部分和第 3 部分排序。 输出表如下:

table2
Row   volume   part 1   part 2   part 3 
2     1020     3        6        7 
4      200     9        2        1 
3      100     1        9        2 
1      520     2        5        3 

如果我在数量上排序,那么表格第一列的第 1 部分、第 2 部分和第 3 部分就订单量而言,然后其余的项目实践排序你是下面创建的表(表3).

table 3
Row   volume   part 1   part 2   part 3 
2     1020     3        6        7 
1      520     2        5        3 
4      200     9        2        1 
3      100     1        9        2 

虽然我希望将表 2 作为输出。

请帮帮我。

【问题讨论】:

  • 使用 CASE 和子查询排序,大量工作......
  • 这是一个非常神秘的要求。你能解释一下为什么需要这个吗?
  • 为什么是vb.net 标签?您需要查询来执行此操作或如何使用 vb.net 代码执行此操作?
  • “行+卷+第 1 部分+第 2 部分+第 3 部分”是否每个单独的列?
  • 是的,每个单独的都是一列。

标签: sql tsql sorting


【解决方案1】:

与 cte1(行,第 1 部分,第 2 部分,第 3 部分,第 4 部分,rownum)
作为
(
从 table1 中选择 top 1 *,part 1 作为 rownum
其中第 1 部分 =(从表 1 中选择 MAX(第 1 部分))

联合所有

从 table1 中选择 top 1 *,part 2 作为 rownum
其中第 2 部分 =(从表 1 中选择 MAX(第 2 部分))

联合所有

从 table1 中选择前 1 *,第 3 部分作为 rownum
其中第 3 部分 =(从表 1 中选择 MAX(第 3 部分))

联合所有

从 table1 中选择前 1 *,第 4 部分作为 rownum
其中第 4 部分 =(从表 1 中选择 MAX(第 4 部分))


),
cte2(行,第 1 部分,第 2 部分,第 3 部分,第 4 部分)
作为(
从 cte1 中选择不同的行,第 1 部分、第 2 部分、第 3 部分、第 4 部分)
,
cte3(行,第 1 部分,第 2 部分,第 3 部分,第 4 部分,rownum)
作为(
select *, ROW_NUMBER() over (order by row) rownum from cte2 )
,
cte4(行,第 1 部分,第 2 部分,第 3 部分,第 4 部分)
作为(
从 cte1 中选择前 100% cte1.row、cte1.part 1、cte1.part 2、cte1.part 3、cte1.part 4
在 cte1.rownum=cte3.rownum 上加入 cte3
按 cte1.rownum 排序
)
从 cte4 中选择 *
联合所有
从表 1 中选择 *
其中行不在(从 cte4 中选择行)


【讨论】:

    猜你喜欢
    • 2010-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-18
    • 1970-01-01
    相关资源
    最近更新 更多