SQL(和 JPA)在非规范化 table 上对参数进行排序
SQL (and JPA) Sorting parameters on a denormalised table
我继承了一个遗留的报告工具并有一个非规范化的 table,它存储了销售团队的 ID,以及描述他们详细信息的字段。
table是这样的(这里简化了字段数):
Table 销售人员:
salerId, fieldId, 值
我们有这样的数据
(1, 1, 母鹿),
(1, 2, 约翰),
(2, 1, 史密斯),
(2, 2, 罗伯特),
(3, 1, 白色),
(3, 2, 艾伦)
我需要获取按姓氏和名字排序的销售人员列表。
我不是 SQL 专家,我无法弄清楚如何以通用方式获得它(因为 table 包含的字段类型远不止名字和姓氏类型)。
此外,我在数据库之上使用 JPA,并且有一个 Class 描述这些字段。我仍然不明白如何使用 JPA 编写这样的查询。
class SaleInformation {
private int salerID;
private int fieldID;
private String value;
}
有什么想法吗?
提前致谢
吉尔斯
我可以在 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
我继承了一个遗留的报告工具并有一个非规范化的 table,它存储了销售团队的 ID,以及描述他们详细信息的字段。
table是这样的(这里简化了字段数):
Table 销售人员: salerId, fieldId, 值
我们有这样的数据
(1, 1, 母鹿), (1, 2, 约翰), (2, 1, 史密斯), (2, 2, 罗伯特), (3, 1, 白色), (3, 2, 艾伦)
我需要获取按姓氏和名字排序的销售人员列表。
我不是 SQL 专家,我无法弄清楚如何以通用方式获得它(因为 table 包含的字段类型远不止名字和姓氏类型)。
此外,我在数据库之上使用 JPA,并且有一个 Class 描述这些字段。我仍然不明白如何使用 JPA 编写这样的查询。
class SaleInformation {
private int salerID;
private int fieldID;
private String value;
}
有什么想法吗?
提前致谢
吉尔斯
我可以在 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