【问题标题】:SQL (and JPA) Sorting parameters on a denormalised tableSQL(和 JPA)对非规范化表的参数进行排序
【发布时间】:2015-03-25 20:02:19
【问题描述】:

我继承了一个旧的报告工具,并有一个非规范化的表格,其中存储了销售人员团队的 ID,以及描述他们详细信息的字段。

表格是这样的(这里简化了字段数):

餐桌销售员: salerId, fieldId, 值

我们有类似的数据

(1, 1, 能源部), (1, 2, 约翰), (2, 1, 史密斯), (2, 2, 罗伯特), (3, 1, 白色), (3, 2, 艾伦)

我需要获取按姓氏和名字排序的销售商列表。

我不是 SQL 专家,我无法弄清楚如何以通用方式获取此信息(因为该表包含的字段远不止名字和姓氏类型)。

此外,我在数据库之上使用 JPA,并且有一个描述这些字段的类。我仍然不明白如何使用 JPA 编写这样的查询。

class SaleInformation {
    private int salerID;
    private int fieldID;
    private String value;
}

有什么想法吗?

提前致谢

吉尔

【问题讨论】:

  • 请正确示例或任务条件:我找不到销售商信息。

标签: sql jpa denormalization


【解决方案1】:

我可以在 SQL 代码中帮助你:

select salerID, [2] LastName, [1] FirstName
from Salers s
pivot 
(
  max(value) for fieldID in ([1], [2])
) Result
order by [2], [1]

或者,如果您不能使用 PIVOT 运算符:

select ISNULL(FirstName.salerID, LastName.salerID) salerID
  , LastName.value LastName
  , FirstName.value FirstName
from (
  select *
  from Salers s
  where s.fieldID = 1) FirstName
full outer join (
  select *
  from Salers s
  where s.fieldID = 2) LastName on FirstName.salerID = LastName.salerID
order by LastName.value, FirstName.value

【讨论】:

  • 非常感谢。这帮助我以一种非常简单的方式解决了这个问题。测试完所有内容后,我将发布修复程序。再次感谢
猜你喜欢
  • 2013-03-08
  • 2016-09-24
  • 1970-01-01
  • 2019-04-29
  • 2016-11-12
  • 2019-05-05
  • 2015-03-30
  • 1970-01-01
  • 2011-12-18
相关资源
最近更新 更多