使用记录分组按订单号对列表进行排序

时间:2021-03-26 09:49:32

标签: tsql

我有一份订单清单。我想对列表进行排序,如果同一客户下的订单不止一个,则订单被分组。很难用语言来解释,所以这里是一个例子:

这是按订单号排序的列表:

<table>
  <tr>
    <th>Customer</th>
    <th>Order No</th>
  </tr>
  <tr>
    <td>A</td>
    <td>1</td>
  </tr>
  <tr>
    <td>B</td>
    <td>2</td>
  </tr>
  <tr>
    <td>C</td>
    <td>3</td>
  </tr>
  <tr>
    <td>A</td>
    <td>4</td>
  </tr>
  <tr>
    <td>A</td>
    <td>5</td>
  </tr>
  <tr>
    <td>D</td>
    <td>6</td>
  </tr><tr>
    <td>C</td>
    <td>7</td>
  </tr>
</table>

我希望这个列表看起来像这样:

    <table>
      <tr>
        <th>Customer</th>
        <th>Order No</th>
      </tr>
      <tr>
        <td>A</td>
        <td>1</td>
      </tr>
      <tr>
        <td>A</td>
        <td>4</td>
      </tr>
      <tr>
        <td>A</td>
        <td>5</td>
      </tr>
      <tr>
        <td>B</td>
        <td>2</td>
      </tr>
      <tr>
        <td>C</td>
        <td>3</td>
      </tr>
      <tr>
        <td>C</td>
        <td>7</td>
      </tr>
      <tr>
        <td>D</td>
        <td>6</td>
      </tr>
    </table>

我将非常感谢您的任何提示:) 谢谢!

1 个答案:

答案 0 :(得分:0)

您可以创建客户和订单的地图。 为每个地图条目创建一个订单号列表。 这样做您可以对每个订单列表进行排序。

示例:

const list = [
  { customer: 'A', ordernumber: 2 },
  { customer: 'B', ordernumber: 1},
  { customer: 'A', ordernumber: 1 },
  { customer: 'A', ordernumber: 3 }
]

customerOrderMap = {}
list.forEach(element => customerOrderMap[element.customer] = [])
list.forEach(element => customerOrderMap[element.customer].push(element.ordernumber))

Object.keys(customerOrderMap).forEach(key => {
  console.log(customerOrderMap[key].sort((a, b) => a - b))
})


console.log(customerOrderMap)
相关问题