我需要显示每个'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) 我在查询中遇到错误。此查询正常并返回数据(选择和行数用于分页):
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) 我的 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中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 …
我正在尝试编写一个查询,该查询将一些结果(在我的情况下为单个结果)放在顶部,然后对其余结果进行排序。我尚未找到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) 我有一个大型数据集,其中包含许多带有状态的列。我想创建一个包含参与者当前状态的新专栏。我正在尝试在 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) 我试图在 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 …
我正在尝试编写一条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) 我试图意识到为什么我不能使用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) 我知道我们可以写if, else if, else if一个忽略大小写。
if (someString.equals("otherString", ignoreCase = true)) {
}
Run Code Online (Sandbox Code Playgroud)
我对此很好奇,如何在忽略大小写的情况下编写何时(在 Java 中它是一个开关)条件。
case-when ×10
sql ×5
r ×3
dplyr ×2
oracle ×2
count ×1
having ×1
identifier ×1
kotlin ×1
ora-00904 ×1
postgresql ×1
sql-order-by ×1
sql-server ×1
string ×1
t-sql ×1
tidyverse ×1
varchar ×1