gpt4 book ai didi

mysql - SQL Server 2008 中的 case 语句中的多个字段检查

转载 作者:行者123 更新时间:2023-11-30 23:58:14 24 4
gpt4 key购买 nike

MySQL 中的

Case 语句 语法:-

CASE
WHEN search_condition THEN statement_list
[WHEN search_condition THEN statement_list] ...
[ELSE statement_list]
END CASE
SQL Server 2008 中的

Case 语句 语法:-

Simple CASE expression: 
CASE input_expression
WHEN when_expression THEN result_expression [ ...n ]
[ ELSE else_result_expression ]
END

关注SQL SERVER CASE STATEMENT SYNTAX

我已经解释了不同之处,以便用户可以理解我在这里想说的话

我在 MySql 中有以下代码:-

SELECT sum(case when Year=2014 or purchased=0 then 0 else TC.TOTAL_SP_COST-TC.TOTAL_CP_COST end) as EARNINGs

from TABLE TC

如果您没看错,案例说明有 2 字段(年份和购买)

当我在 MS SQL SERVER 2008 中尝试相同的代码时,当我尝试在 SQL SERVER 中的 case 语句中添加 2 个字段时,“或”下方出现了一条红线。

SELECT sum(case (Year or purchased) when 2014 then 0 when 0 then 0 else TC.TOTAL_SP_COST-TC.TOTAL_CP_COST end) as EARNINGs

所以简单的问题是“我们可以在 SQL SERVER 的 case 语句中添加多个字段吗?”如果是我们该怎么做?

最佳答案

您在问题中的代码看起来不错 - 无论您是否在 下有一条红色波浪线。您是否尝试过执行它,或者您是否认为因为那里有一条红线,所以它不可能工作? IntelliSense 什么都不是 - 通常它落后了,或者它提示代码中其他地方与当前语句无关的事情。比如你觉得这里的第二条语句真的有问题吗?

enter image description here

如果我突出显示该语句,SELECT 仍将带有下划线,就好像它不正确一样。这并不意味着当我执行它时它会失败。

这是一个示例,显示您的代码工作正常,尽管您看到的是红色波浪线 - 可能是完全不相关的原因。

CREATE TABLE dbo.[TABLE]
(
[Year] INT,
purchased BIT,
TOTAL_SP_COST INT,
TOTAL_CP_COST INT
);

SELECT SUM(CASE WHEN [Year] = 2014 OR purchased = 0 THEN 0
ELSE TOTAL_SP_COST - TC.TOTAL_CP_COST END) AS EARNINGs
FROM dbo.[TABLE] AS TC;

当然,我还做了一些其他的调整,例如当你必须使用 reserved words (even future keywords)作为列名(你真的应该解决这个问题),你应该正确地转义它们,你应该 always use the schema prefixget in the habit of using semi-colons as statement terminators .

Meaningless SQL Fiddle example, since I have no idea of your sample data or desired results .

最后,一个重要的语义:CASE 是一个表达式,而不是一个语句。语法图中遗漏的重要内容是搜索到的 CASE 表达式的输入和输出本身必须是单个表达式,并且 SQL Server 中没有 bool 表达式。所以你不能说:

CASE (col1 OR col2) WHEN something THEN ...

关于mysql - SQL Server 2008 中的 case 语句中的多个字段检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21193919/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com