Sql 加载到游标中的空值?
因此,我创建了两个游标来存储正在加载到表中的数据。数据一次加载一个,我需要对整个数据集进行验证,而不仅仅是单个记录。因此会有这样的数据(但同样,它只加载单个数据,而不是作为一个整体加载) 因此,游标将取和或每种类型,然后将其与不同的表号配对。然后在底部检查以确保每个表号始终有一个1和-1(即表号5155-55至少有一个类型1和一个类型-1) 输出是这样的Sql 加载到游标中的空值?,sql,oracle,validation,plsql,cursor,Sql,Oracle,Validation,Plsql,Cursor,因此,我创建了两个游标来存储正在加载到表中的数据。数据一次加载一个,我需要对整个数据集进行验证,而不仅仅是单个记录。因此会有这样的数据(但同样,它只加载单个数据,而不是作为一个整体加载) 因此,游标将取和或每种类型,然后将其与不同的表号配对。然后在底部检查以确保每个表号始终有一个1和-1(即表号5155-55至少有一个类型1和一个类型-1) 输出是这样的 Distinct : 5155-55 SUM x: -2 SUM y: 1 ----------------------
Distinct : 5155-55
SUM x: -2
SUM y: 1
----------------------------
Distinct: 4568-98
SUM x: -3
SUM y: 1
----------------------------
Distinct: 3302-48
SUM x: -1
SUM y: 1
----------------------------
GREAT JOB!
Distinct: 5155-55
SUM x: -2
SUM y: 1
----------------------------
Distinct: 4568-98
SUM x: -3
SUM y: 1
----------------------------
GREAT JOB!
Distinct: 5155-55
SUM x: -2
SUM y: 1
----------------------------
Distinct: 4568-98
SUM x: -3
SUM y: 1
----------------------------
Distinct: 3302-48
SUM x: 0
SUM y: 1
----------------------------
ERROR MESSAGE
它非常有效,除非表单_no没有-1或1
输入示例:
form_no | type
---------------
5155-55 | -1
5155-55 | -1
5155-55 | 2
5155-55 | 1
|
4568-98 | -1
4568-98 | -1
4568-98 | -1
4568-98 | 2
4568-98 | 1
3302-48 | 1
3302-48 | 2
请注意,表号3302-48没有-1。那么输出是这样的
Distinct : 5155-55
SUM x: -2
SUM y: 1
----------------------------
Distinct: 4568-98
SUM x: -3
SUM y: 1
----------------------------
Distinct: 3302-48
SUM x: -1
SUM y: 1
----------------------------
GREAT JOB!
Distinct: 5155-55
SUM x: -2
SUM y: 1
----------------------------
Distinct: 4568-98
SUM x: -3
SUM y: 1
----------------------------
GREAT JOB!
Distinct: 5155-55
SUM x: -2
SUM y: 1
----------------------------
Distinct: 4568-98
SUM x: -3
SUM y: 1
----------------------------
Distinct: 3302-48
SUM x: 0
SUM y: 1
----------------------------
ERROR MESSAGE
除了我希望它是这样
Distinct : 5155-55
SUM x: -2
SUM y: 1
----------------------------
Distinct: 4568-98
SUM x: -3
SUM y: 1
----------------------------
Distinct: 3302-48
SUM x: -1
SUM y: 1
----------------------------
GREAT JOB!
Distinct: 5155-55
SUM x: -2
SUM y: 1
----------------------------
Distinct: 4568-98
SUM x: -3
SUM y: 1
----------------------------
GREAT JOB!
Distinct: 5155-55
SUM x: -2
SUM y: 1
----------------------------
Distinct: 4568-98
SUM x: -3
SUM y: 1
----------------------------
Distinct: 3302-48
SUM x: 0
SUM y: 1
----------------------------
ERROR MESSAGE
谁能告诉我怎么做。我不确定游标是否可以接受空值(即,如果没有1或-1,则将没有任何内容加载到游标中)。实际上不需要涉及PL/SQL处理,只需使用SQL即可实现所需的结果:
SQL> select col
2 , val
3 from ( select form_no as "Distinct:"
4 , to_char(sum(case when type1 = -1 then type1 else 0 end)) as sumx
5 , to_char(sum(case when type1 = 1 then type1 else 0 end)) as sumy
6 from t1
7 group by form_no
8 )
9 unpivot(
10 val for col in ("Distinct:", sumx, sumy)
11 )
12 ;
结果:
COL VAL
--------- ----------
Distinct: 5155-55
SUMX -2
SUMY 1
Distinct: 4568-98
SUMX -3
SUMY 1
Distinct: 3302-48
SUMX 0
SUMY 1
9 rows selected
注意