我有一个包含N列的表。让我们称它们为c1
, c2
, c3
, c4
, ... cN
。COUNT DISTINCT(cX)
在多行中,我想为[1, N] 中的每个 X获得一行。
c1 | c2 | ... | cn
0 | 4 | ... | 1
有没有办法我可以做到这一点(在存储过程中),而无需手动将每个列名写入查询?
为什么?
我们遇到了一个问题,应用服务器中的错误意味着我们用稍后插入的垃圾来重写好的列值。为了解决这个问题,我存储了信息日志结构,其中每一行代表一个逻辑UPDATE
查询。然后,当给出记录完成的信号时,我可以确定是否有任何值被(错误地)覆盖。
多行中单个正确记录的示例:每列最多有一个值。
| id | initialize_time | start_time | end_time |
| 1 | 12:00am | NULL | NULL |
| 1 | 12:00am | 1:00pm | NULL |
| 1 | 12:00am | NULL | 2:00pm |
Reconciled row:
| 1 | 12:00am | 1:00pm | 2:00pm |
我要检测的不可调和记录的示例:
| id | initialize_time | start_time | end_time |
| 1 | 12:00am | NULL | NULL |
| 1 | 12:00am | 1:00pm | NULL |
| 1 | 9:00am | 1:00pm | 2:00pm | -- New initialize time => irreconcilable!