【问题标题】:Sort Items Based on Item Order and Parent Category Order using MS SQL Server使用 MS SQL Server 根据项目顺序和父类别顺序对项目进行排序
【发布时间】:2019-02-19 15:01:52
【问题描述】:

我有两个表“Table1”是主类别,“Table2”是项目两个表都有特定顺序的项目

在表 1 中,类别按 ASC 中的 CatOrder 排序,在表 2 中,项目也在 ItemOrder 中排序。

现在我需要根据 CatOrder 的顺序显示项目,然后是“ItemOrder”

Table1
CatID
CatName
CatType
CatOrder

Table2
ItemID
ItemName
ItemLogo
ItemDetails
CatType
ItemOrder

我如何进行 sql 查询,以便它首先根据 CatOrder & 然后 ItemOrder 获取所有项目

Select ItemName, ItemOrder FROM Table1 t1 JOIN Table2 t1 ON T1.CatType = T2.CatType Order By T2.CatOrder

上面的查询没有得到预期的结果&当我添加 Group By 时得到聚合函数错误

预期结果

Item    |CatOrder   |   ItemOrder
Item 1  |   10  |   10
Item 3  |   10  |   20
Item 2  |   10  |   30
Item 5  |   20  |   10
Item 4  |   20  |   20
Item 6  |   20  |   30
Item 7  |   30  |   10

【问题讨论】:

  • 为什么在Table2中拥有所有必需的列时要加入两个表,以及添加group by后的预期输出是什么
  • 我必须根据 Table1 中的 Order 类别显示数据

标签: sql sql-server


【解决方案1】:

你可以尝试使用多个order by

顺序排序将取决于您的order by 列顺序。

Select ItemName, CatOrder,ItemOrder
FROM Table1 t1
JOIN Table2 T2 ON T1.CatType = T2.CatType
Order By CatOrder,ItemOrder

【讨论】:

    【解决方案2】:

    使用这个查询得到想要的结果 -

    Select ItemName, CatOrder, ItemOrder 
    FROM Table1 t1 JOIN Table2 t2 ON T1.CatType = T2.CatType 
    Order By T1.CatOrder, t2.ItemOrder 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-29
      • 2022-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-22
      相关资源
      最近更新 更多