【发布时间】:2021-11-17 15:14:41
【问题描述】:
例如,我有一个包含这些值的表:
| ID | Date | Col1 | Col2 | Col3 | Col4 |
|---|---|---|---|---|---|
| 1 | 01/11/2021 | A | A | B | |
| 2 | 01/11/2021 | B | B |
A 和 B 值是动态的,它们也可以是其他字符。
现在我需要以某种方式得出 id 1 出现 2 次 A 和出现 B 之一的结果。id 2 出现 0 次 A 和 2 次 B。
我正在使用动态 SQL 来执行此操作:
for v_record in table_cursor
loop
for i in 1 .. 4
loop
v_query := 'select col'||i||' from table where id = '||v_record.id;
execute immediate v_query into v_char;
if v_char = "any letter I'm checking" then
amount := amount + 1;
end if;
end loop;
-- do somehting with the amount
end loop;
但必须有更好更有效的方法来做到这一点。
我对 plsql 的了解不多,我真的不知道如何在 google 中提出这个问题。我已经研究过枢轴,但我认为在这种情况下这对我没有帮助。
如果有人可以帮助我,我将不胜感激。
【问题讨论】:
-
您还应该包括预期输出的样子。这在您的光标脚本中并不明显。
-
实际上没有预期的输出。我只需要将数据放在另一个表中。
标签: oracle plsql count row multiple-columns