sql - 如何从列中分离值
问题描述
列填充借方和贷方值,如
100
150
-300
400
-300
我为as创建了新列CREDIT_ACCOUNT
。由于该列中填充了值。该值应null
在DEBIT
COLUMN中设置为
整个数据是基于Select
和Case
语句提取和填充的。如何使 sql WORK 以NULL
在-300
COLUMNDEBIT
中设置
COALESCE
(
CASE DBO.TRUNC_NUM1((DBO.TO_NUMBER(DBO.TO_DATE(#prompt('Q_Date','string')#,'yyyy-mm-dd')-AR_ACCOUNT_ITEM_NEW.BILL_DATE))/#prompt('P_Interval')#)
WHEN 0 THEN
CASE RTRIM(AR_ACCOUNT_ITEM_NEW.BILL_REF)
WHEN 'BILL' THEN AR_ACCOUNT_ITEM_NEW.REMAINING_AMOUNT
END
ELSE NULL
END
,0) THIS_MONTH,
COALESCE
(
CASE DBO.TRUNC_NUM1((DBO.TO_NUMBER(DBO.TO_DATE(#prompt('Q_Date','string')#,'yyyy-mm-dd')-AR_ACCOUNT_ITEM_NEW.BILL_DATE))/#prompt('P_Interval')#)
WHEN 1 THEN
CASE RTRIM(AR_ACCOUNT_ITEM_NEW.BILL_REF)
WHEN 'BILL' THEN AR_ACCOUNT_ITEM_NEW.REMAINING_AMOUNT
END
ELSE NULL
END
,0) THIRTY,
COALESCE
(
CASE DBO.TRUNC_NUM1((DBO.TO_NUMBER(DBO.TO_DATE(#prompt('Q_Date','string')#,'yyyy-mm-dd')-AR_ACCOUNT_ITEM_NEW.BILL_DATE))/#prompt('P_Interval')#)
WHEN 2 THEN
CASE RTRIM(AR_ACCOUNT_ITEM_NEW.BILL_REF)
WHEN 'BILL' THEN AR_ACCOUNT_ITEM_NEW.REMAINING_AMOUNT
END
ELSE NULL
END
,0) SIXTY,
COALESCE
(
CASE DBO.TRUNC_NUM1((DBO.TO_NUMBER(DBO.TO_DATE(#prompt('Q_Date','string')#,'yyyy-mm-dd')-AR_ACCOUNT_ITEM_NEW.BILL_DATE))/#prompt('P_Interval')#)
WHEN 3 THEN
CASE RTRIM(AR_ACCOUNT_ITEM_NEW.BILL_REF)
WHEN 'BILL' THEN AR_ACCOUNT_ITEM_NEW.REMAINING_AMOUNT
END
ELSE NULL
END
,0) NINETY,
DBO.TO_NUMBER
(
COALESCE
(
CASE DBO.TRUNC_NUM1((DBO.TO_NUMBER(DBO.TO_DATE(#prompt('Q_Date','string')#,'yyyy-mm-dd')-AR_ACCOUNT_ITEM_NEW.BILL_DATE))/#prompt('P_Interval')#)
WHEN 0 THEN NULL
WHEN 1 THEN NULL
WHEN 2 THEN NULL
WHEN 3 THEN NULL
ELSE
CASE RTRIM(AR_ACCOUNT_ITEM_NEW.BILL_REF)
WHEN 'BILL' THEN AR_ACCOUNT_ITEM_NEW.REMAINING_AMOUNT
END
END
,0)
) ONETWENTY,
解决方案
如果您只想将负值放在不同的列中,方法如下:
Select Case When Debit_Amount >= 0 then Debit_Amount Else Null End as Debit_Amount,
Case When Debit_Amount < 0 then Debit_Amount Else Null End as Credit_Amount,
<Other Columns>
From
(
-- Your Query to get Debit_Amount and other data
) Q
-- 或者如果您的表已经被填充:
Update YourTable
Set Credit_Amount = Debit_Amount
Where Debit_Amount < 0
Update YourTable
Set Debit_Amount = Null
Where Debit_Amount < 0
推荐阅读
- python - 直接从 numpy 进行 h.264 编码
- java - 如何在 Spring WebClient 中拦截 http 流量?
- windows - wmic路径win32_process获取多个参数
- asp.net-core - AutoMapper - 映射源对象中不存在的目标对象的属性
- shopify - 在我手动将其添加到 Shopify 之前,块上的预设不会显示
- java - 在java代码中定义Kotlin扩展函数
- firebase - Firebase 中文档的属性数量是否有上限?
- python - 如何计算日期时间对象之间的差异并根据天数获取时间间隔
- bash - 带有期望的 Bash 脚本在本地和 sftp 中执行命令
- java - 如何解决这种拒绝服务问题的可能性?