Ana*_*tic 0 sql oracle null select plsql
一般来说,我对SQL编写非常环保.我试图做的是从具有多个JOINS和WHERE Criteria的SELECT查询返回一个奇异值.
EX:以下返回我之后讨论的3个值:
SELECT TBL5.FIELD1, TBL5.FIELD2, TBL5.FIELD3
FROM TBL1 PA
JOIN TBL2 PH ON PH.PAID = PA.PAID
JOIN TBL3 CM ON CM.CMID = PA.ECMID
JOIN TBL4 HD ON CM.SURID = HD.PHID
JOIN TBL5 PD ON PD.PHID = HD.PHID
WHERE PH.PSID = 1234
AND PA.PAID = 10039528
AND NVL(PA.ECMID,0) > 0
AND CM.CMTV = 'EECR'
AND PD.MAID = 939252
Run Code Online (Sandbox Code Playgroud)
我想要做的是将所有三列TBL5.FIELD1,TBL5.FIELD2,TBL5.FIELD3的值返回为(1)别名字段.根据我目前正在检索的记录,最后2个字段为空,第一个字段返回-32.47.但是当我执行下面的操作时,我得到的所有内容都是[null]而不是预期的(-32.47 + null + null)=( - 32.47)?
SELECT (TBL5.FIELD1 + TBL5.FIELD2 + TBL5.FIELD3) AS TOTAL_REFUND
FROM TBL1 PA
JOIN TBL2 PH ON PH.PAID = PA.PAID
JOIN TBL3 CM ON CM.CMID = PA.ECMID
JOIN TBL4 HD ON CM.SURID = HD.PHID
JOIN TBL5 PD ON PD.PHID = HD.PHID
WHERE PH.PSID = 1234
AND PA.PAID = 10039528
AND NVL(PA.ECMID,0) > 0
AND CM.CMTV = 'EECR'
AND PD.MAID = 939252
Run Code Online (Sandbox Code Playgroud)
null不是一种价值,而是缺乏价值.您可以将其视为"未知"值.因此,当将任何实际值添加到未知值时,结果将是未知的 - 或者,在数据库术语中null.如果要将其视为零,则必须明确地将其视为零,例如,通过使用以下coalesce函数:
SELECT (COALESCE(TBL5.FIELD1,0) +
COALESCE(TBL5.FIELD2,0) +
COALESCE(TBL5.FIELD3,0)) AS TOTAL_REFUND
FROM TBL1 PA
JOIN TBL2 PH ON PH.PAID = PA.PAID
JOIN TBL3 CM ON CM.CMID = PA.ECMID
JOIN TBL4 HD ON CM.SURID = HD.PHID
JOIN TBL5 PD ON PD.PHID = HD.PHID
WHERE PH.PSID = 1234
AND PA.PAID = 10039528
AND NVL(PA.ECMID,0) > 0
AND CM.CMTV = 'EECR'
AND PD.MAID = 939252
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
557 次 |
| 最近记录: |