标签: case-when

SQL - CASE WHEN计算不同的值

我需要显示每个'id'有多少不同的值.

它应该如下所示:

id    |  component_a | component_b | component_c
--------------------------------------------------
KLS11 |     none     |      one    |     none       
KLS12 |     one      |      one    |     none         
KLS13 |     several  |      one    |     none        
KLS14 |     one      |      one    |     one            
KLS15 |     one      |    several  |     several           
Run Code Online (Sandbox Code Playgroud)

我有下表(table_a):

id    |  component_a | component_b | component_c
--------------------------------------------------
KLS11 |              |      a      |            
KLS12 |       a      |      a      |              
KLS13 |       a      |      a      |             
KLS13 |       b      |      a      |               
KLS14 |       a …
Run Code Online (Sandbox Code Playgroud)

sql oracle count having case-when

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

Oracle新手错误:ORA-00904使用“case when”时标识符无效

我在查询中遇到错误。此查询正常并返回数据(选择和行数用于分页):

select *
from (select a.*, rownum rnum
from (select id_edition, id_document, name, extension, creation_date, url, 
(select inscription_date from edition_student_d0 where id_edition = 12345 and id_third =     12345) inscription_date
from upd_edition_doc_d0
where id_edition = 1071591
order by creation_date desc) a
where rownum <= 10 )
where rnum >= 1
Run Code Online (Sandbox Code Playgroud)

现在我尝试包含“case when”并仅在某些情况下获取 url,因此我进行了这些修改,包括 case 块:

select *
from (select a.*, rownum rnum
from (select id_edition, id_document, name, extension, creation_date, 
(select inscription_date from edition_student_d0 where id_edition = 12345 and id_third = 12345) …
Run Code Online (Sandbox Code Playgroud)

oracle identifier case-when ora-00904

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

如果原始值与任何when_表达式都不匹配,则返回原始值

我的 SQL 导出字段上有一行,并且我试图删除字段中返回的空白值(如果它与姓氏中的“AMA”完全匹配)。但是,当我使用当前代码导出文件时,姓氏不带“AMA”的名称将被完全删除。

,Max(
    Orders.ShipFirstName
    + ' ' +  
        CASE Orders.ShipLastName
            WHEN 'AMA' THEN ''
        END
) As ShipFullName
Run Code Online (Sandbox Code Playgroud)

现在,如果某人是“Ray Miller”,ShipFullName将返回空白。但如果他们的名字是“Ray AMA”,那么他们的名字将返回为“Ray”。我想要它,以便当在姓氏字段中找不到 AMA 时返回“Ray Miller”。

sql t-sql sql-server case-when

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

在处理订单时搜索CASE

我需要一些关于SQL中Searched CASE WHEN语句的处理顺序的信息.

例如:

(CASE
     WHEN Cells.Type <> 'UOM' THEN 0
     WHEN Template_Colors.Uom_Case = 'ONE' THEN 1
     WHEN Template_Colors.Uom_Case = 'MUL' THEN 2
 END) AS CELL_WHAT_UOM
Run Code Online (Sandbox Code Playgroud)

0除非,我总是需要结果Cells.Type <> 'UOM'.

我知道SQL解析器通常从底部到顶部,但在Oracle中,查询似乎正常工作,因此我认为WHEN子句按它们的顺序处理.

这是100%保证0情况下,先于其他处理?

或者我强制写道:

(CASE
     WHEN Cells.Type <> 'UOM' THEN 0
     WHEN Cells.Type = 'UOM' AND Template_Colors.Uom_Case = 'ONE' THEN 1
     WHEN Cells.Type = 'UOM' AND Template_Colors.Uom_Case = 'MUL' THEN 2
 END) AS CELL_WHAT_UOM
Run Code Online (Sandbox Code Playgroud)

...?

我需要有关Oracle 10g + SQL server 2008 …

sql case-when

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

如何在PostgreSQL中执行完全匹配,后跟ORDER BY

我正在尝试编写一个查询,该查询将一些结果(在我的情况下为单个结果)放在顶部,然后对其余结果进行排序。我尚未找到PostgreSQL解决方案。

说我有一个airports像这样的桌子。

 id | code |        display_name         
----+------+----------------------------
  1 | SDF  | International               
  2 | INT  | International Airport       
  3 | TES  | Test                        
  4 | APP  | Airport Place International
Run Code Online (Sandbox Code Playgroud)

简而言之,我在控制器方法中有一个查询,当用户文本通过code或搜索机场时,该查询将被异步调用display_name。但是,当用户输入的输入code完全匹配时(机场代码是唯一的),我希望该结果首先出现,然后所有int在其中也要display_name升序显示的机场。如果不存在完全匹配项,则应返回所有按display_name升序排序的通配符匹配项。因此,如果用户输入INT(2, INT, International Airport)则应首先返回该行,然后再返回其他行:

Results:
1. INT | International Airport
2. APP | Airport Place International
3. SDF | International
Run Code Online (Sandbox Code Playgroud)

这是我正在修改的查询的一种,它在我的应用程序上下文之外进行了稍微简化以使其有意义,但是仍然具有相同的概念。

SELECT * FROM airports
WHERE display_name LIKE 'somesearchtext%'
ORDER BY …
Run Code Online (Sandbox Code Playgroud)

sql postgresql sql-order-by case-when columnsorting

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

跨列使用 case_when 创建新列

我有一个大型数据集,其中包含许多带有状态的列。我想创建一个包含参与者当前状态的新专栏。我正在尝试在 dplyr 中使用 case_when,但我不确定如何跨列。数据集的列太多,我无法输入每一列。以下是数据示例:

library(dplyr)
problem <- tibble(name = c("sally", "jane", "austin", "mike"),
                  status1 = c("registered", "completed", "registered", "no action"),
                  status2 = c("completed", "completed", "registered", "no action"),
                  status3 = c("completed", "completed", "withdrawn", "no action"),
                  status4 = c("withdrawn", "completed", "no action", "registered"))
Run Code Online (Sandbox Code Playgroud)

对于代码,我想要一个新列,说明参与者的最终状态;但是,如果他们的地位不断被完成,那么我想它说完成,无论其最终状态是什么。对于此数据,答案如下所示:


answer <- tibble(name = c("sally", "jane", "austin", "mike"),
                 status1 = c("registered", "completed", "registered", "no action"),
                 status2 = c("completed", "completed", "registered", "no action"),
                 status3 = c("completed", "completed", "withdrawn", "no action"),
                 status4 = c("withdrawn", "completed", "no action", "registered"), …
Run Code Online (Sandbox Code Playgroud)

string r case-when conditional-statements dplyr

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

r dplyr::case_when 错误:必须是字符向量,而不是双向量

我试图在 dplyr::mutate 中使用 dplyr::case_when 来替换一些值:

data<-data%>%
  mutate(floor = case_when(
    floor_id == 2 ~ "ground_floor",
    floor_id == 3 ~ "mezzanine",
    floor_id == 1 ~ "basement",
    floor_id == 30 ~ "over_10",
    floor==1 ~ 1,
    floor==2 ~ 2,
    floor==3 ~ 3,
    floor==4 ~ 4,
    floor==5 ~ 5,
    floor==6 ~ 6,
    floor==7 ~ 7,
    floor==8 ~ 8,
    floor==9 ~ 9,
    floor==10 ~ 10,
    TRUE ~ as.character(floor)))
Run Code Online (Sandbox Code Playgroud)

我有一个错误

Error: must be a character vector, not a double vector
Run Code Online (Sandbox Code Playgroud)

我有 2 个问题:1) 有谁知道如何更改代码来修复此错误?2)如果没有匹配,则返回 NA 这就是为什么我添加所有这些行,如 floor==10 …

r case-when

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

sql 数据类型不一致:预期数字得到字符

我正在尝试编写一条Case When语句,但出现数据类型不一致的错误。如果不满足第一个 when 语句,我需要显示“已返回”。

CASE
WHEN (X.RECEIVED_QTY = 0) THEN FLOOR(SYSDATE-INVENTORY_TRANS.TRANSACTION_DATE) 
WHEN (X.RECEIVED_QTY = 0) THEN 'RETURNED'
END AS DAYS_OUT 
Run Code Online (Sandbox Code Playgroud)

sql varchar case-when

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

如何使用 case_when 而不是 if_else [我的代码中有错误?]

我试图意识到为什么我不能使用dplyr::case_when而不是dplyr::if_else.
可能我错过了一些东西。让我解释:

我得到了这个工作正常的操作:

df %>%
  mutate(
    keep = if_else(
      assembly_level != "Complete Genome" | genome_rep != "Full",
      FALSE,
      ifelse(
        version_status == "suppressed",
        FALSE,
        if_else(
          refseq_category %in% c("reference genome", "representative genome"),
          TRUE,
          if_else(
            rpseudo > 0.4,
            FALSE,
            TRUE
          )
        )
      )
    )
  )
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试使用case_when这种方式时

df %>%
  mutate(
    keep = case_when(
      assembly_level != "Complete Genome" | genome_rep != "Full" ~ FALSE, 
      version_status == "suppressed" ~ FALSE,
      refseq_category %in% c("reference genome", "representative genome") ~ TRUE, 
      rpseudo > …
Run Code Online (Sandbox Code Playgroud)

r vectorization case-when dplyr tidyverse

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

当 koltin 中忽略大小写的条件时

我知道我们可以写if, else if, else if一个忽略大小写。

if (someString.equals("otherString", ignoreCase = true)) {
}
Run Code Online (Sandbox Code Playgroud)

我对此很好奇,如何在忽略大小写的情况下编写何时(在 Java 中它是一个开关)条件。

case-when kotlin

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