sql-server - 根据特定条件在列中显示日期
问题描述
运行以下代码时,我收到错误:
子查询返回超过 1 个值。
=
当子查询跟在,!=
,<
,<=
,>
之后>=
或当子查询用作表达式时,这是不允许的
当我添加最后一点代码时(见联合后)
(select top 1 convert(varchar,PaymentDate,103) from tblUTRDetail where CCN_No=CR.CCN_NO and CR.Claim_Status='Y' order by PaymentDate desc
union all
select top 1 convert(varchar,CreatedDate,103) from tblOpenCloseTrans where S_NO=CR.S_NO and OpenCloseType='C' and CR.Claim_Status='C' order by CreatedDate desc
union all
select top 1 convert(varchar,GENERATED_DATE,103) from tbldeficiencyletterTrans where S_NO=CR.S_NO and DEFICIENT_REPUDATION_FLAG='NC' and CR.Claim_Status='NC' order by GENERATED_DATE desc
union all
select top 1 convert(varchar,GENERATED_DATE,103) from tbldeficiencyletterTrans where S_NO=CR.S_NO and DEFICIENT_REPUDATION_FLAG='R' and CR.Claim_Status='RC' order by GENERATED_DATE desc
union
(select GENERATED_DATE from (Select s_no, convert (varchar,(GENERATED_DATE),103)as GENERATED_DATE ,row_number()
over(partition by s_no order by s_no asc )as rw from tblDeficiencyLetterTrans b
where DEFICIENT_REPUDATION_FLAG='NC' and s_no=CR.S_NO) T where rw=1)
)
as SETTLEMENT_DATE,
解决方案
您的查询如下所示:
SELECT *
,(select 1 union all select 2
union all select 3
union all select 3
union (select 4)) as SETTLEMENT_DATE
FROM sys.tables
您正在选择一些列值,对于其中之一,您最多可以为一列返回 4 个值SETTLEMENT_DATE
。
因此,您可以有多个值,其中一个值是预期的,这就是错误对您说的。你必须选择:
如果您想查看所有值,只需像这样为每一列指定一个单独的名称
SELECT * ,select 1 as SETTLEMENT_DATE1 , select 2 as SETTLEMENT_DATE2 , select 3 as SETTLEMENT_DATE3 , select 3 as SETTLEMENT_DATE4 , (select 4) as SETTLEMENT_DATE5 FROM sys.tables
添加更多逻辑以每次从此子查询仅返回一个值
( SELECT TOP 1 date FROM ( (select top 1 convert(varchar,PaymentDate,103) from tblUTRDetail where CCN_No=CR.CCN_NO and CR.Claim_Status='Y' order by PaymentDate desc union all select top 1 convert(varchar,CreatedDate,103) from tblOpenCloseTrans where S_NO=CR.S_NO and OpenCloseType='C' and CR.Claim_Status='C' order by CreatedDate desc union all select top 1 convert(varchar,GENERATED_DATE,103) from tbldeficiencyletterTrans where S_NO=CR.S_NO and DEFICIENT_REPUDATION_FLAG='NC' and CR.Claim_Status='NC' order by GENERATED_DATE desc union all select top 1 convert(varchar,GENERATED_DATE,103) from tbldeficiencyletterTrans where S_NO=CR.S_NO and DEFICIENT_REPUDATION_FLAG='R' and CR.Claim_Status='RC' order by GENERATED_DATE desc union (select GENERATED_DATE from (Select s_no, convert (varchar,(GENERATED_DATE),103)as GENERATED_DATE ,row_number() over(partition by s_no order by s_no asc )as rw from tblDeficiencyLetterTrans b where DEFICIENT_REPUDATION_FLAG='NC' and s_no=CR.S_NO) T where rw=1) ) ) DS (date) ORDER BY date ) as SETTLEMENT_DATE,
推荐阅读
- pentaho - 如何将当前月份设置为 pentaho cde 上简单参数的默认值?
- html - 设置元素的语言属性会导致儿童出现 unicode 字符样式错误
- azure - Azure 流分析作业因“查询编译错误”而失败,但当我单独测试时运行相同的查询
- postgresql - 从 JSON 对象中提取所有键,除非某个键具有值
- flutter - Android 依赖 'androidx.core:core' 的编译(1.0.0)和运行时(1.0.1)类路径有不同的版本
- flutter - ld: 找不到框架 Flutter
- node.js - 默认值 Nodejs
- apache-spark - 如何使用 DseGraphFrame 基于特定遍历导出 Datastax 图
- vue.js - 创建highcharts vue组件
- java - 从另一个 Jar (Maven) 添加属性文件