sql - 在 SQL Server SELECT 请求中创建条件
问题描述
我想让你对我的问题有所了解。我正在使用 SQL Server,并且有一个 SELECT 请求。在这个请求中,我想提出一个条件。
这是我的代码:
SELECT
Workflow.Id as Id,
...,
SELECT CAST (
CASE WHEN @CodeAlgo = 'BQ'
THEN
(SELECT MAX(TopConfidentiel) FROM DonneesFinancieresComplementaires WHERE IdWorkflow = Workflow.Id) as TopConfidentiel
ELSE
(SELECT MAX(TopConfidentiel) FROM DonneesFinancieres WHERE IdWorkflow = Workflow.Id) as TopConfidentiel
END)
FROM Workflow
SQL Server Management Studio 告诉我:
'SELECT' 附近的语法不正确。
我必须以不同的方式写我的条件吗?
我也尝试过这样的事情:
SELECT
Workflow.Id as Id,
...,
IF @CodeAlgo = 'BQ'
BEGIN
(SELECT MAX(TopConfidentiel) FROM DonneesFinancieresComplementaires WHERE IdWorkflow = Workflow.Id) as TopConfidentiel
END
ELSE
BEGIN
(SELECT MAX(TopConfidentiel) FROM DonneesFinancieres WHERE IdWorkflow = Workflow.Id) as TopConfidentiel
END
FROM Workflow
但同样的事情。
解决方案
您可以这样尝试(如果需要强制转换,您可以在 select 子句中强制转换 TopConfidentiel 字段):
SELECT
Workflow.Id as Id,
...,
CASE
WHEN @CodeAlgo = 'BQ'
THEN
(SELECT
CAST(MAX(TopConfidentiel) AS yourtype)
--If CAST is necessary, you can use this for exemple CAST(MAX(TopConfidentiel) AS VARCHAR(10)).
FROM DonneesFinancieresComplementaires
WHERE IdWorkflow = Workflow.Id)
ELSE
(SELECT
CAST(MAX(TopConfidentiel) AS yourtype)
FROM DonneesFinancieres
WHERE IdWorkflow = Workflow.Id)
END
AS TopConfidentiel
FROM Workflow
推荐阅读
- mysql - 离开应用程序数据库设计
- networking - UDP打孔混乱
- tensorflow - 对太大而无法放入 RAM 的数据集进行训练
- ballerina - 无法为芭蕾舞演员导入“util”包
- r - 如何通过取 mtcars 数据集中的均值和 hp 的平均值在数据聚合的基础上为行名创建 r 排名?
- laravel - Laravel - 如何在中间件之间进行或路由?
- javascript - 我正在尝试使用 mocha 和 chai 测试 API 返回 500(内部服务器错误)的条件
- sparql - Sparql MULTIPLE 不存在条件
- c - 如何在 ATM 中使用 XFS 获取 Cassette 类型信息?
- gradle - 自定义 gradle 插件循环依赖