【发布时间】:2019-06-09 15:48:21
【问题描述】:
我有下表。我想要每章一个值。 (我有一个带有 case 表达式的 SQL,但返回不正确,所以我不会显示以避免混淆。)
每章条件:
A - END_DT 不为 NULL 且 ROLE = RED 且 USERID 不为 NULL 则为 USERID 的最后一行值
B - END_DT 为 NULL 且 ROLE = RED THEN LAST ROW VALUE FOR USERID
表P
END_DT ROLE PK USERID CHAPTER
01/10/19 RED 101 5 1
01/10/19 BLUE 102 5 1
01/10/19 RED 103 7 1
01/10/19 RED 104 1
RED 105 8 2
BLUE 106 9 2
BLUE 107 5 3
预期结果:
CHAPTER USERID
1 7
2 8
【问题讨论】:
-
如果角色是 BLUE 怎么办?
-
这是不完整的。您说,您希望每章有一个值,那么为什么还要说“USERID 的最后一行值”?如果你在谈论“每章条件”,你怎么能谈论某个
END_DT、ROLE和USERID?每章有不同的。请澄清。 -
“最后一行值”对 B 意味着什么?如果没有
END_DT,则没有last 行。还是PK保证上升,你指的是这个?
标签: sql oracle function case rank