标签: case-when

如何在mysql存储过程中使用case-when语句?

我想使用request_time参数自动设置session_id,所以我选择了一个包含case语句的mysql存储过程.继续.

create procedure upd_userinput(in  request_time timestamp, out user_session_id int) 

begin 

update user_input;

case request_time

when time(request_time) < '9:15:00' && time(request_time) > '8:15:00' 
then set user_session_id = 1; 

when  time(request_time)< '10:15:00' && time(request_time) > '11:15:00' 
then set user_session_id =2; 

end case; 
end
//
Run Code Online (Sandbox Code Playgroud)

但是在//之后输入时出现1064错误.我已经检查了mysql文档,我认为案例语法是正确的.

请帮忙.

mysql timestamp procedures case-when

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

在WHERE条款的情况下的"IN"状态?

我的情况很复杂.我想在"where子句"上写一个包含"case when"条件的sql查询.

就像那样:

SELECT *
FROM <table>
WHERE
<Column1> in
   CASE <Column2>
      WHEN 1 THEN ('OP', 'CL') 
      WHEN 0 THEN ('RE', 'ST')
END
Run Code Online (Sandbox Code Playgroud)

Column1必须为"in",而不是"=".因为Column1的条件有多个值.该查询返回"',''附近的语法不正确." 错误.

你能给我任何建议吗?(对不起,我的英语不好.)

编辑:我想我误解了.如果Column2为1,则条件必须类似于"IN('OP','CL')"否则Column1为2,条件必须类似"IN('RE','ST')".

sql t-sql where-clause case-when

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

SQL Server使用CASE WHEN THEN语句

我有这样的示例查询:

select t1.name,t1.bday,t2.address,t2.contactnum
from table1 as t1
left join table2 as t2 on t1.p_id = t2.p_id
where (case when @qualified = '2' then t2.role is null
        case when @qualified = '3' then t2.role is not null` end)
Run Code Online (Sandbox Code Playgroud)

当我执行查询时,会弹出一个错误,指示:

关键字'is'附近的语法不正确.

有没有想过为这些人解决问题?

谢谢!

此查询的目的是获取表中的空行和非空行,具体取决于参数@qualified上传递的值.

sql sql-server case-when

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

使用 OR 时的情况

有没有办法将 OR 与 CASE WHEN 一起使用,就像这样?

SELECT
    case 'brasil'   
    when 'chile' OR 'brasil' THEN   
                        'ok'
    when 'argentina' then
        'ok2'
    when 'venezuela' THEN
        'ok3'
    ELSE
        'chaves'
end;
Run Code Online (Sandbox Code Playgroud)

sql postgresql case-when

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

我可以在案例陈述中使用.include?()吗?红宝石

我已经开始学习Ruby了.我有一个小项目来构建游戏并尝试创建一个接收用户输入并相应处理的函数.

def Game.listener
  print "> "

  while listen = $stdin.gets.chomp.downcase

    case listen
    when (listen.include?("navigate"))
      puts "Navigate to #{listen}"
      break
    when ($player_items.include?(listen))
      Items.use(listen)
      break
    end

    puts "Not a option"
    print "> "
  end
end
Run Code Online (Sandbox Code Playgroud)

但是,case语句无法检测到我已键入导航.有没有办法解决这个问题,或者如果我完全关闭,有人能指出我正确的方向吗?

我找到了解决问题的方法,这是一种安全可靠的方法吗?

  while listen = $stdin.gets.chomp
      case listen.include?(listen)
      when listen.include?("navigate")
        puts "Navigate to #{listen}"
      when listen.include?("test")
        puts "test"
      when $player_items.include?(listen)
        puts "Using the #{$player_items[listen]}"
        break
      else
        puts "Not a option"
      end
      print "> "
   end
Run Code Online (Sandbox Code Playgroud)

ruby case include case-when

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

SQL - CASE WHEN - 转置后数据显示在单独的行上

我正在尝试将列数据转置为单独的列。(请注意,我不能使用 Pivot 函数或动态 SQL)。

源表具有三列(年份、城市、数据1)。

我正在尝试将“城市”列转置为单独的列,以便比较所选城市的数据。

这是我的代码:

SELECT  t.year, 
   CASE WHEN city = 'San Francisco' THEN t.data1 END) SF, 
   CASE WHEN city = 'Paris' THEN t.data1 END) PAR, 
   CASE WHEN city = 'New York' THEN t.data1 END) NYC
FROM t
WHERE city IN ('San Francisco', 'Paris', 'New York')
GROUP BY t.year, t.data1
ORDER BY t.year
Run Code Online (Sandbox Code Playgroud)

结果如下表。

输出

问题是“年”行重复了几次,而我希望将所有选定城市的数据显示在一个“年”行上。否则我无法绘制任何折线图。

任何帮助表示赞赏。

表输入示例:

+------+---------------+-------+
| year |     city      | data1 |
+------+---------------+-------+
| 2001 | San Francisco | 15.25 |
| 2001 | …
Run Code Online (Sandbox Code Playgroud)

sql transpose multiple-columns case-when

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

在多个条件下写案例的更好方法

我已经编写了以下查询,以帮助我将数据细分为不同的单元格。这有200多个条件,所以我只提供了一个小样本。对于我来说,有没有一种更好的方法可以编写此语句,因为从研究进展来看,我最多只能编写50条CASE WHEN....THEN语句。

SELECT    

Company_0.CompanyID 
    ,Company_0.CoaCompanyName
    ,(CASE 
    WHEN Company_0.CompanyID = 7942127 THEN 'BLUE'
    WHEN Company_0.CompanyID = 7950986 THEN 'BLUE'
    WHEN Company_0.CompanyID = 7955733 THEN 'BLUE'
    WHEN Company_0.CompanyID = 7955922 THEN 'BLUE'
    WHEN Company_0.CompanyID = 7956194 THEN 'RED'
    WHEN Company_0.CompanyID = 9166261 THEN 'RED'
    WHEN Company_0.CompanyID = 9167003 THEN 'YELLOW'
    WHEN Company_0.CompanyID = 9167015 THEN 'YELLOW
ELSE NULL
END' AS 'CELL'
Run Code Online (Sandbox Code Playgroud)

返回结果后,它应如下所示:

ID              COMPANY NAME          CELL
-------------------------------------------------------
7942127             A                 BLUE
7950986             B                 BLUE
7955733             C                 BLUE
7955922             D                 BLUE
7956194 …
Run Code Online (Sandbox Code Playgroud)

sql excel progress-db openedge case-when

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

对 ELSE CASE SQL 查询使用 Convert

我正在 Postgres 中执行 SQL 查询,该查询选择一个数字字段。我需要显示一个字符串值作为此 SELECT 的结果,因此我使用CASE如下语句:

Select 
case numeric_field
when 100 then 'some string'
when 200 then 'some other string'
Run Code Online (Sandbox Code Playgroud)

问题是,如果数字字段有任何其他值(例如300),我需要显示该值(当然作为字符串)。CONVERT我尝试像这样在其他上放一个

...
else CONVERT(varchar(10),numeric_field)
Run Code Online (Sandbox Code Playgroud)

但这没有用。我该怎么做呢?

sql postgresql sql-convert case case-when

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

复杂条件变异:使用条件变异创建新变量,仅使用给定参与者的过去观察?

我有一个数据框(fbwb),在一组参与者中使用多个度量(1-3)对欺凌(1-6)进行多次评估.df看起来像这样:

fbwb <- read.table(text="id year bully1 bully2 bully3 cbully bully_ever 
100 1 NA 1 NA 1 1
100 2 1 1 NA 1 1
100 3 NA 0 NA 0 1
101 1 NA NA 1 1 1
102 1 NA 1 NA 1 1
102 2 NA NA NA NA 1
102 3 NA 1 1 1 1
102 4 0 0 0 0 1
103 1 NA 1 NA 1 1
103 2 NA 0 0 0 1", …
Run Code Online (Sandbox Code Playgroud)

r case-when stata dplyr mutate

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

使用 case_when 进行字符串匹配的多个模式

我正在尝试使用 str_detect 和 case_when 根据多个模式重新编码字符串,并将重新编码的值的每次出现粘贴到新列中。正确列是我试图实现的输出。

这类似于this questionthis question If it can't be done with case_when (仅限于我认为的一种模式)有没有更好的方法可以仍然使用tidyverse来实现?

Fruit=c("Apples","apples, maybe bananas","Oranges","grapes w apples","pears")
Num=c(1,2,3,4,5)
data=data.frame(Num,Fruit)

df= data %>% mutate(Incorrect=
paste(case_when(
  str_detect(Fruit, regex("apples", ignore_case=TRUE)) ~ "good",
  str_detect(Fruit, regex("bananas", ignore_case=TRUE)) ~ "gross",
  str_detect(Fruit, regex("grapes | oranges", ignore_case=TRUE)) ~ "ok",
  str_detect(Fruit, regex("lemon", ignore_case=TRUE)) ~ "sour",
  TRUE ~ "other"
),sep=","))

  Num                 Fruit Incorrect
  1                Apples      good
  2 apples, maybe bananas      good
  3               Oranges      other
  4       grapes w apples      good
  5                pears       other
Run Code Online (Sandbox Code Playgroud)

 Num …
Run Code Online (Sandbox Code Playgroud)

r case-when tidyverse

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