标签: case

WHERE 子句中的 SQL Server Case 语句

我试图在 WHERE 子句中搜索 CaseStatement。但我没有发现与我的场景相似。

下面是我在 WHERE 子句中使用 CASE 语句的 SQL 语句。如果PartName = B,那么我应该应用 ( RecoveraleFlag = 1 ) 条件以及其他条件。其他 此条件不适用,但所有其他条件应保持不变。

FROM Rec.Communications A
          INNER JOIN REC.CommunicationTypes B ON A.CommunicationTypeKey = B.CommunicationTypeKey   
          INNER JOIN occ.Cases c ON a.CaseId = c.CaseId
          INNER JOIN occ.Claims cl on a.CaseId = cl.CaseId
          INNER JOIN ops.Concepts d ON c.ConceptKey = d.ConceptKey
          INNER JOIN OPS.Regions f ON d.MODSRegionKey = f.MODSRegionKey 
          INNER JOIN COM.RepriceRequestOccurrences e ON a.CommunicationId = e.CommunicationId
          INNER JOIN occ.Providers prv ON c.MODSProviderKey = …
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server case sql-server-2008

1
推荐指数
1
解决办法
1万
查看次数

java.lang.NumberFormatException:对于输入字符串:""解析字符串表达式

我正在尝试解析字符串表达式(即"6 + 10*2-5")并使用for-case语句将答案计算为double.但是我收到错误:

Exception in thread "main" java.lang.NumberFormatException: For input string: ""
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
    at java.lang.Integer.parseInt(Integer.java:470)
    at java.lang.Integer.parseInt(Integer.java:499)
    at Calculator.random(Calculator.java:50)
    at Calculator.main(Calculator.java:210)
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

public static double random(String exp) {
    double primeResult = 0;
    for (int i=0; i<exp.length();i++) {
        double left = Integer.parseInt(exp.substring(0,i));
        double right = Integer.parseInt(exp.substring(i+1,i+2));
        switch(exp.charAt(i)) {
            case '*':
            primeResult = left * right;
            break;
        case '/':
            primeResult = left / right;
            break;
        case '+':
            primeResult = left + right;
            break;
        case '-':
            primeResult = left - right;
            break; …
Run Code Online (Sandbox Code Playgroud)

java for-loop case

1
推荐指数
1
解决办法
2014
查看次数

多个开关用于相同的情况

我有这个代码:

switch(month){
    case 1:
        System.out.print("January");
            break;
case 2:
    System.out.print("February");
        break;
case 3:
    System.out.print("March");
        break;
case 4:
    System.out.print("April");
        break;
case 5:
    System.out.print("May");
        break;
case 6:
    System.out.print("June");
        break;
case 7:
    System.out.print("July");
        break;
case 8:
    System.out.print("August");
        break;
case 9:
    System.out.print("September");
        break;
case 10:
    System.out.print("October");
        break;
case 11:
    System.out.print("November");
        break;
case 12:
    System.out.print("December");
        break;
}
Run Code Online (Sandbox Code Playgroud)

好的,所以这个代码100%完美地工作...对于int月.我有另一个int(avgMonth)只能保持相同的值(1-12),我想只有相同的输出(月份).如何在不必复制整个交换机和案例的情况下将avgMonth添加到此代码中?我尝试使用逗号(月,avgMonth)和&&(月&& avgMonth)以及+'s(月+ avgMonth),但无济于事.

java case switch-statement

1
推荐指数
1
解决办法
114
查看次数

MySQL CASE 基于以前的 CASE 值

在 MySQL 中,是否可以CASESELECT子句中有两个语句,其中第二个CASE语句依赖于第一个CASE语句?

例如,考虑以下查询:

SELECT CASE WHEN `user`.`id` < 500 THEN 'awesome' ELSE 'lame' END
    AS `status`

     ,  CASE WHEN `status` = 'awesome' THEN 'You rock' ELSE 'You stink' END
    AS `message`

  FROM `user`
Run Code Online (Sandbox Code Playgroud)

基本上,用户 ID 决定状态,然后状态决定消息。

但是,正如您可能已经猜到的,此查询会生成以下错误:

Unknown column 'status'
Run Code Online (Sandbox Code Playgroud)

到目前为止我发现的唯一解决方案是两个生成一个临时表、视图或子查询,然后messagestatus这个子查询中返回的确定。

有没有办法在不使用临时表、视图或子查询的情况下编写此查询?如果可能的话,我试图避免这些构造以保持查询简单和优化。谢谢!

mysql view case subquery temp-tables

1
推荐指数
1
解决办法
2655
查看次数

VHDL中CASE语句中的多个赋值

我还是VHDL的新手.我需要在CASE语句中为多个信号赋值,如下所示:

CASE input24 IS
WHEN "00" THEN 
                    output0 <= '1' ;
                    output1 <= '0' ;
                    output2 <= '0' ;
                    output3 <= '0' ;

WHEN "01" THEN 
                    output0 <= '0' ;
                    output1 <= '1' ;
                    output2 <= '0' ;
                    output3 <= '0' ;

WHEN "10" THEN 
                    output0 <= '0' ;
                    output1 <= '0' ;
                    output2 <= '1' ;
                    output3 <= '0' ;

WHEN "11" THEN 
                    output0 <= '0' ;
                    output1 <= '0' ;
                    output2 <= '0' ;
                    output3 <= '1' ; …
Run Code Online (Sandbox Code Playgroud)

case vhdl assign

1
推荐指数
1
解决办法
3万
查看次数

sqlserver中的case语句在where子句中,else始终为true

我使用了始终为true的语句,例如1 = 1在MYSQL中使用where语句的case语句,语法如下:

select * from tablename where 
(case when tablefield is not null then 
 then tablefield = 'value'
else 1 = 1 end)
Run Code Online (Sandbox Code Playgroud)

我想知道如何1 = 1在where子句中的sqlserver/tsql case语句中使用else (always true statement).

mysql sql t-sql sql-server case

1
推荐指数
1
解决办法
1063
查看次数

SQL返回多个变量

我正在尝试用case语句编写查询.我在将case语句输出为多个变量时遇到问题.基本上我想取1列,然后将第一部分作为outputcolumn1"FIRST",将最后4个字符作为outputcolumn2"LAST"

我尝试做一些研究,但我没有找到任何解决我的味道...我知道我忽略了一些非常愚蠢的东西.

Select *
Case When a.col_1 is NULL 
-- Grab all but last 4 as "FIRST"
Then LEFT(b.col_1, len(b.col_1) -4
-- Grab Last 4 as "LAST"
AND RIGHT(b.col_1, 4)
Else LEFT(a.col_1, len(a.col_1) -4
AND RIGHT(a.col_1, 4)

end as FIRST,LAST

From Table_1 as a
inner join Table_2 as b on a.TableID = b.TableID
Run Code Online (Sandbox Code Playgroud)

sql case

1
推荐指数
1
解决办法
46
查看次数

PL/SQL在CASE语句中返回一个列表

我需要一个CASE语句来返回一个字符串列表但我有一些语法问题.生成的SQL应该是这样的:

SELECT * FROM FRUIT WHERE COLOR IN ('RED', 'YELLOW')
Run Code Online (Sandbox Code Playgroud)

我正在尝试做什么(这不起作用):

SELECT * FROM FRUIT WHERE COLOR IN
CASE
    WHEN TYPE = *something*
    THEN ('RED', 'YELLOW')
    ELSE ('GREEN')
END
Run Code Online (Sandbox Code Playgroud)

这有效:

SELECT * FROM FRUIT WHERE COLOR IN
CASE
    WHEN TYPE = 1
    THEN 'RED'
    ELSE 'GREEN'
END
Run Code Online (Sandbox Code Playgroud)

我得到的错误:

ORA-00907 missing right parenthesis
Run Code Online (Sandbox Code Playgroud)

当我使用多个COLOR ='X'或COLOR ='Y'时,它可以工作,但我想知道是否有一种方法只能使用一个CASE语句.提前致谢.

sql oracle case

1
推荐指数
1
解决办法
367
查看次数

如何在Haskell的case语句中使用if/then/else或guards?

"Guards vs. If-Then-Else"帮助了一点,但我仍然想知道这是否可以以某种方式起作用.我需要获取一个列表并返回列表中的每个其他元素.对于偶数长度列表,我得到它只是如果长度(xs)mod2 == 1开始是有问题所以我想打破列表情况的初始长度,如下所示:

everyOther:: [Int] -> [Int] 
everyOther [] = [] 
everyOther (x:xs) = case length (xs) 'mod' 2 of 0 ->  
if (length (xs) `mod` 2 == 0)   
then  x:everyOther (take 1 xs) 
else x:everyOther (drop 1 xs) 
1 -> if (length (xs) `mod` 2 == 1) 
then  x:everyOther (take 1 xs) 
else x:everyOther (drop 1 xs)
Run Code Online (Sandbox Code Playgroud)

它告诉我"if"可能存在"间距错误",但这在功能上是正确的.我可以这样做吗?

haskell if-statement case

1
推荐指数
1
解决办法
553
查看次数

使用Sql server case语句传递给substring函数的长度参数无效

在case语句中使用它时,我遇到了substring函数的问题.

select              
case when -1<0 then 'ok' else SUBSTRING('abcd',1,-1) end
Run Code Online (Sandbox Code Playgroud)

给我一个问题:传递给substring函数的长度参数无效.

自第一个条件满足以来,为什么案件会"看"其他条件?

另一方面查询:

declare @a int;
set @a=-1

select              
@a,
case when @a<0 then 'ok' else SUBSTRING('abcd',1,@a) end
Run Code Online (Sandbox Code Playgroud)

提出正确答案'确定'没有任何错误.

sql-server case

1
推荐指数
1
解决办法
297
查看次数