【问题标题】:SQL/Access Expression Custom SortSQL/Access 表达式自定义排序
【发布时间】:2014-05-06 03:01:35
【问题描述】:

我有一个难以通过 SQL 或 Expression Builder 解决的排序问题。假设我有“Group 1”,它是十个应用程序的名称。对该组进行排序很容易访问。每个系统都有一组与提供者和消费者的交换。棘手的地方是首先对发送系统的名称进行二次排序,然后是 a-z。请参阅下面的示例:

库存管理系统 (L1)

  1. 资产管理系统 (L2)
  2. 服务管理系统 (L2)
  3. 库存管理系统 (L2)
  4. 计算机管理系统 (L2)

在“L1”级别排序没有问题,但在此之下我希望我的第一个“L2”记录匹配 L1 记录,然后可以是 A-Z。

在上面的示例中,我希望它看起来像这样:

库存管理系统 (L1)

  1. 库存管理系统 (L2)
  2. 资产管理管理系统 (L2)
  3. 计算机管理系统 (L2)
  4. 服务管理系统 (L2)

逻辑类似于如果任何 L2 值等于 L1 值,则首先列出它们,并且任何不等于 L1 值的都可以升序排序。

【问题讨论】:

  • @Gordon,请注意你的标签!上次有人创建access 时,我清理了一周。 ://
  • @Charles 。 . .谢谢你的警告。我会更加小心。

标签: sql ms-access


【解决方案1】:

你可以试试这个:

order by l1,
         iif(l2 = l1, 0, 1),
         l2

【讨论】:

    【解决方案2】:

    所以我找到了使用您上面的代码的部分解决方案。我的结果现在看起来像这样

    库存管理系统 (L1)

    库存管理系统 (L2)

    库存管理系统 (L2) 应用管理系统 网络管理系统(L2)

    这就是棘手的地方。 Access 将所有与 L1 不匹配的结果解释为一个全新的值。我得到了解决方案的第一部分,因为排序是基于 L2 名称自定义的,但与 L1 名称关联的所有其他值现在都被排序为单独的值。

    我的代码是 =IIf(([OriginNode])=([APPNAME]),0,1)

    我认为如果我将排序移到 L1 分组下方,这将解决它,但随后我得到了

    Order by 子句与 group by 子句冲突???

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-29
      • 1970-01-01
      • 2022-01-03
      • 2023-04-03
      • 2021-07-25
      • 1970-01-01
      相关资源
      最近更新 更多