【发布时间】:2021-10-29 14:18:45
【问题描述】:
我在数据库中有以下列:
Col1 Col2 Col3 Col4 Col5
AAA NULL AA1 AA1 0
NULL BBB AA1 AA1 0
CCC NULL BB1 BB2 1
DDD NULL BB1 BB2 1
执行“需要”存储过程后,将创建一个新列。新列的数据逻辑会是这样的:
- 根据 col3、col4、col5 对数据进行分组
- 根据组(按 col3、col4、col5 分组),新创建的列 (Col6) 中的数据将返回 col6 中的数据,条件如下:
-
如果组内的每一行在 col1 OR col2 中都有数据。 Col6 =1 示例:AA1 有 2 行,如果 col1 OR col2 有数据,它将检查每一行
如果其中一列不为空,col6 = 1 Col3 Col4 Col5 Col6 AA1 AA1 0 1 -
如果组内的每一行只有 1 个数据示例,每行只有 col1 中的数据或每行只有 col2 中的数据),Col6 = 2 示例:BB1 有 2 行,如果 col1 或 col2 有,它将检查每一行 数据。如果两行只有 col1 中的数据或两行只有 col2 中的数据,col6 = 2 Col3 Col4 Col5 Col6 BB1 BB2 1 2
-
预期的结果会是这样的:
Col3 Col4 Col5 Col6
AA1 AA1 0 1
BB1 BB2 1 2
您有什么想法可以返回预期的结果吗?谢谢
【问题讨论】:
-
我希望 AA1 的 col6 = 2。
-
应该是 col6 = 1。由于 AA1 的每一行在 col1 中有值 OR AA1 在 col2 中有值,对于 BB1,col6 = 1,col1 只有值,所以 col6 = 2
-
标记你的数据库
标签: sql