sql - 在子选择聚合表达式上使用 ISNULL 并返回空字符串
问题描述
我的查询中有以下子选择表达式。我想要做的是用 ISNULL 函数包装整个聚合表达式,当遇到 NULL 时,我希望它返回一个空字符串 ('')。
我尝试运行以下命令,但出现 Varchar 到 Numeric 转换错误,因为空字符串是 varchar,但表达式是用数字计算的。
SELECT PS_PO_LINE.PO_ID, PS_PO_LINE.PO_DT,
ISNULL((SELECT SUM (PS_PO_LN_ORDER_VW.AMT_ORDERED)
FROM PS_PO_LN_ORDER_VW PS_PO_LN_ORDER_VW WHERE PS_PO_LN_ORDER_VW.BUSINESS_UNIT=PS_PO_LINE.BUSINESS_UNIT AND
PS_PO_LN_ORDER_VW.PO_ID=PS_PO_LINE.PO_ID AND PS_PO_LN_ORDER_VW.LINE_NBR=PS_PO_LINE.LINE_NBR
AND PS_PO_LINE.AMT_ONLY_FLG = 'Y' ), '') AS "AMOUNT"
FROM PS_PO_LINE PS_PO_LINE
如果 NULL 函数的计算结果为 True,我不想返回 0,我宁愿返回 ''。这可能吗?
解决方案
@Charlieface 是对的:ISNULL 将第二个参数强制为第一个参数的类型。也许试试这个
选择 PS_PO_LINE.PO_ID、PS_PO_LINE.PO_DT、 ISNULL(CAST((选择总和(PS_PO_LN_ORDER_VW.AMT_ORDERED) 从 PS_PO_LN_ORDER_VW PS_PO_LN_ORDER_VW 其中 PS_PO_LN_ORDER_VW.BUSINESS_UNIT=PS_PO_LINE.BUSINESS_UNIT 和 PS_PO_LN_ORDER_VW.PO_ID=PS_PO_LINE.PO_ID 和 PS_PO_LN_ORDER_VW.LINE_NBR=PS_PO_LINE.LINE_NBR 和 PS_PO_LINE.AMT_ONLY_FLG = 'Y' ) 作为 VARCHAR, '') 作为 "AMOUNT" 从 PS_PO_LINE PS_PO_LINE
推荐阅读
- react-native - 如何在 react-native 中处理导航中的 searchbar onchangetext 事件?
- .net - 在主窗体关闭时关闭多个父窗体
- javascript - 如何用JS打印“\”
- reactjs - Heroku 部署在构建时失败
- python - Django CreateView:在一个表单中自动设置两个外键字段
- python - Sqlalchemy 查询的结果中缺少行
- r - R中的Unicode使用str()而不是print()显示-如何使用gsub()?
- typescript - 打字稿自定义映射类型
- python - 通过列表排序后列表索引超出范围?
- typescript - 如何重置对象中的属性值?