我知道问题本身有点令人困惑,我不确定该如何措辞,因此,我想举一些例子来更好地解释我的问题。
首先,我将从应用程序数据库中提取数据以进行验证。因此,提取的数据将采用以下表格格式
VAB MMO BeerfestCircle 1 NO = OM1, VAB MMO BeerfestCircle 2 NO = OM2, VAB MMO BeerfestOutdazzling 1 NO = OM3, VAB MMO BeerfestOutdazzling 2 NO = OM4, BOAR VAP EG SAM Blaster Out 1 NO = OG1, BOAR VAP EG SAM Blaster Out 2 NO = OG2, BOAR VAP EG SAM Blaster Cir 1 NO = OG3, BOAR VAP EG SAM Blaster Cir 2 NO = OG4
第一种情况:
GUID Name Value TimeStamp
---- -------------------------------- ----- ---------
1111 BOAR VAP EG SAM Blaster Out 1 NO 10 11:00
1111 BOAR VAP EG SAM Blaster Out 2 NO 20 11:00
1111 BOAR VAP EG SAM Blaster Cir 1 NO 30 11:00
1111 BOAR VAP EG SAM Blaster Cir 2 NO 40 11:00
1111 VAB MMO BeerfestCircle 1 NO 50 11:00
1111 VAB MMO BeerfestCircle 2 NO 60 11:00
1111 VAB MMO BeerfestOutdazzling 1 NO 70 11:00
1111 VAB MMO BeerfestOutdazzling 2 NO 80 11:00
2222 BOAR VAP EG SAM Blaster Out 1 NO 90 12:00
2222 BOAR VAP EG SAM Blaster Out 2 NO 100 12:00
2222 BOAR VAP EG SAM Blaster Cir 1 NO 110 12:00
2222 BOAR VAP EG SAM Blaster Cir 2 NO 120 12:00
2222 VAB MMO BeerfestCircle 1 NO 130 12:00
2222 VAB MMO BeerfestCircle 2 NO 140 12:00
2222 VAB MMO BeerfestOutdazzling 1 NO 150 12:00
2222 VAB MMO BeerfestOutdazzling 2 NO 160 12:00
第一种情况的预期结果:
GUID Name Value TimeStamp
---- --------------------------------- ----- ---------
1111 BOAR VAP EG SAM Blaster Out 1 NO 10 11:00
1111 BOAR VAP EG SAM Blaster Out 2 NO 20 11:00
1111 BOAR VAP EG SAM Blaster Cir 1 NO 30 11:00
1111 BOAR VAP EG SAM Blaster Cir 2 NO 40 11:00
2222 BOAR VAP EG SAM Blaster Out 1 NO 90 12:00
2222 BOAR VAP EG SAM Blaster Out 2 NO 100 12:00
2222 BOAR VAP EG SAM Blaster Cir 1 NO 110 12:00
2222 BOAR VAP EG SAM Blaster Cir 2 NO 120 12:00
第二种情况
GUID Name Value TimeStamp
---- -------------------------------- ----- ---------
1111 BOAR VAP EG SAM Blaster Out 1 NO 10 11:00
1111 BOAR VAP EG SAM Blaster Out 2 NO 20 11:00
1111 VAB MMO BeerfestCircle 1 NO 50 11:00
1111 VAB MMO BeerfestCircle 2 NO 60 11:00
1111 VAB MMO BeerfestOutdazzling 1 NO 70 11:00
1111 VAB MMO BeerfestOutdazzling 2 NO 80 11:00
2222 BOAR VAP EG SAM Blaster Out 1 NO 90 12:00
2222 BOAR VAP EG SAM Blaster Out 2 NO 100 12:00
2222 BOAR VAP EG SAM Blaster Cir 1 NO 110 12:00
2222 BOAR VAP EG SAM Blaster Cir 2 NO 120 12:00
2222 VAB MMO BeerfestCircle 1 NO 130 12:00
2222 VAB MMO BeerfestCircle 2 NO 140 12:00
2222 VAB MMO BeerfestOutdazzling 1 NO 150 12:00
2222 VAB MMO BeerfestOutdazzling 2 NO 160 12:00
第二种情况的预期结果:
GUID Name Value TimeStamp
---- --------------------------------- ----- ---------
1111 BOAR VAP EG SAM Blaster Out 1 NO 10 11:00
1111 BOAR VAP EG SAM Blaster Out 2 NO 20 11:00
1111 VAB MMO BeerfestOutdazzling 1 NO 70 11:00
1111 VAB MMO BeerfestOutdazzling 2 NO 80 11:00
2222 BOAR VAP EG SAM Blaster Out 1 NO 90 12:00
2222 BOAR VAP EG SAM Blaster Out 2 NO 100 12:00
2222 BOAR VAP EG SAM Blaster Cir 1 NO 110 12:00
2222 BOAR VAP EG SAM Blaster Cir 2 NO 120 12:00
在表中,查询后始终会显示BOAR值,如果没有BOAR值,则将使用VAB(s)值替换BOAR(s)值。 BOAR(s)或VAB(s)值,将不会显示记录。我们将非常感谢您提供的任何帮助。
答案 0 :(得分:0)
请考虑使用row_number
。此解决方案假定X
始终位于最后一个字符的三个位置。
select guid, name, value, timestamp
from (
select *,
row_number() over (partition by guid, substring(name, len(name)-3,1) order by name) rn
from data
) t
where rn = 1