我继承了一个遗留的报告工具,并且有一个非规范化的表格,用于存储销售团队的ID,以及描述其详细信息的字段。
表格就像这样(这里有简化的字段数):
表Salers: salerId,fieldId,value
我们有像
这样的数据(1,1,Doe), (1,2,约翰), (2,1,史密斯), (2,2,罗伯特), (3,1,白), (3,2,艾伦)
我需要获取按姓氏和名字排序的搜索者列表。
我不是SQL专家,我无法弄清楚如何以通用方式获取它(因为该表包含的不仅仅是名字和姓氏类型的字段)。
此外,我在数据库的顶部使用JPA,并有一个描述这些字段的类。我仍然不知道如何用JPA编写这样的查询。
class SaleInformation {
private int salerID;
private int fieldID;
private String value;
}
有什么想法吗?
提前致谢
吉勒
答案 0 :(得分:0)
我可以在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