我的要求是从复杂查询中获取一个数字并检查num = desiredNum.
如果它等于desiredNum,那么我必须执行另一组select语句,
有什么方法可以在查询中实现这一点而不是编写函数吗?
例如:
select case when val =2
then select val1 from table1
else 'false'
from (select val from table)
Run Code Online (Sandbox Code Playgroud)
这可能吗 ??
我试图基于CASE WHEN THEN THEN语句返回true或false,但结果面板中唯一显示的是列名"IsGeneric".
我哪里错了?
alter proc Storefront.proc_IsProjectGeneric
@ProjectID INT
AS
SET NOCOUNT ON;
SELECT 'IsGeneric'=CASE WHEN p.[GenericCatalogID] > 0 THEN CAST(1 AS BIT) ELSE CAST(0 AS BIT) END
FROM Storefront.Project p WITH(NOLOCK)
WHERE p.ID = @ProjectID;
SET NOCOUNT OFF;
Run Code Online (Sandbox Code Playgroud) 我有一本包含多个剧本的剧本。它看起来是这样的:
- name: Play A
hosts: localhost
roles:
- do task to get either B or C
- name: Play B
hosts: Host B
roles:
- do necessary task
- name: Play C
hosts: Host C
roles:
- do necessary task
- name: Play D
host: localhost
roles:
- create_logs
Run Code Online (Sandbox Code Playgroud)
每当 playbook 被触发时,它将首先运行第一个 play 以获得 B 或 C 结果。
结果是确定运行该游戏的主机属性,例如主机的IP地址和操作系统。
之后,根据结果,例如如果结果是B,我将运行播放B并跳过播放C。
否则,如果结果是 C,我将跳过 Play B 并运行 Play C。
无论先前 Play 的结果如何,Play D 将作为最后一个 Play 运行。
我怎样才能做到这一点?我尝试过使用“when”条件,但它说它不是 Play 的属性。
我试图在postgresql中创建一个数据透视表类型视图,我差点就到了!这是基本查询:
select
acc2tax_node.acc, tax_node.name, tax_node.rank
from
tax_node, acc2tax_node
where
tax_node.taxid=acc2tax_node.taxid and acc2tax_node.acc='AJ012531';
Run Code Online (Sandbox Code Playgroud)
而数据:
acc | name | rank
----------+-------------------------+--------------
AJ012531 | Paromalostomum fusculum | species
AJ012531 | Paromalostomum | genus
AJ012531 | Macrostomidae | family
AJ012531 | Macrostomida | order
AJ012531 | Macrostomorpha | no rank
AJ012531 | Turbellaria | class
AJ012531 | Platyhelminthes | phylum
AJ012531 | Acoelomata | no rank
AJ012531 | Bilateria | no rank
AJ012531 | Eumetazoa | no rank
AJ012531 | Metazoa | kingdom
AJ012531 …Run Code Online (Sandbox Code Playgroud) 我有几个条件,结果应该是相同的.我搜索网络,发现这样的东西:
CASE ProductLine
WHEN 'R' THEN 'Road'
WHEN 'M' THEN 'Mountain'
WHEN 'T' THEN 'Touring'
WHEN 'S' THEN 'Other sale items'
ELSE 'Not for sale'
END
Run Code Online (Sandbox Code Playgroud)
这很好,但不是我需要的,对我来说更像R,M,T和S都有相同的结果,例如A,B,C,D没有.我该怎么做?我无法与OR连接,或者至少我没有设法:).这样的事可能吗?
CASE ProductLine
WHEN 'R' OR 'M' OR ... THEN 'Road'
ELSE 'Not for sale'
END
Run Code Online (Sandbox Code Playgroud) 大家好(我在堆栈上的第一篇文章!),
这有效:
where
Tran_date between @FromDate and @ToDate
and Range = @Range
and Store_ID =
case when @Range = 'RangeName' then
1234
else
Store_ID
end
Run Code Online (Sandbox Code Playgroud)
但我怎么能做到这一点?:
where
Tran_date between @FromDate and @ToDate
and Range = @Range
and Store_ID
case when @Range = 'RangeName' then
not in (1234, 5678)
else
Store_ID
end
Run Code Online (Sandbox Code Playgroud) 我有一个SQL Server表,其中包含所有员工及其疾病的列表.
我需要能够计算他们在本季度患病的天数
问题是,有些人可能已经生病了一年,所以EG可以是2013-12-31,而UNTILDATE可能是2014-12-31(1年病假).但是,它应该只计算当前季度发生的疾病的天数.所以它应该是大约90天的疾病,而不是整整一年.
当前的SQL
select SUM(a.WORKDAYS) as Total
from ABSENCE a
where a.FROMDATE < GETDATE() and
a.UNTILDATE > DATEADD(MONTH, -3, GETDATE())
and
a.ABS_REASON='SICK'
Run Code Online (Sandbox Code Playgroud)
因此,目前,从任何一个正确的日期开始,我需要考虑那些在季度开始之前已经生病但仍然生病进入当前季度的人,但应该只计算从季度开始的天数.本季度末.
任何帮助将不胜感激.
这个选择让我发疯.
错误是:
将nvarchar值'17 .30 h'转换为int数据类型的转换错误.
数据是:
(DateTime) (Nvarchar) (DateTime)
DATAINICI DATAMANUAL DATAFI
null 17.30 h 10/01/2015
01/01/2015 20.30 h null
Run Code Online (Sandbox Code Playgroud)
声明是:
CASE WHEN dbo.Activitat.DataInici is null
THEN DATEPART(DAY,Activitat.Datafi)
ELSE CONVERT(NVARCHAR(50), dbo.Activitat.DataManual)
END
Run Code Online (Sandbox Code Playgroud) 我无法理解dplyr::case_when其工作原理。这里有这个非常简单的行:
library(tidyverse)
case_when(TRUE ~ 50,
FALSE ~ numeric(0))
Run Code Online (Sandbox Code Playgroud)
显然numeric(0),TRUE 是 TRUE,所以它应该发回 50。此外,FALSE 是 FALSE,所以它永远不应该发回 numeric(0)。如果我写的话我就没有问题:
case_when(TRUE ~ 50,
FALSE ~ NaN)
Run Code Online (Sandbox Code Playgroud)
我得到50,这是正确的。我想念什么?
嗨,想在 dyplr、mutate 和 case_when 的特定条件下通过 2 个变量(WHR 和 sexe)创建一个新变量/列(WHRcat)。
数据:
WHR sexe WHRcat (new variable)
1.5 1
2.8 2
0.2 2
0.3 1
1.1 1
Run Code Online (Sandbox Code Playgroud)
我的代码:
test<- test%>% mutate(WHRcat = case_when((WHR >= 1.02 & sexe = 1) ~ 1,
(WHR < 1.02 & sexe = 1) ~ 2,
(WHR >= 0.85 & sexe = 2) ~ 3,
(WHR < 0.85 & sexe = 2) ~ 4,
TRUE ~ 0))
Run Code Online (Sandbox Code Playgroud)
虽然不起作用。
错误:
> test<- test%>% mutate(WHRcat = case_when((WHR >= 1.02 & …Run Code Online (Sandbox Code Playgroud) case-when ×10
sql ×4
t-sql ×4
sql-server ×3
dplyr ×2
r ×2
ansible ×1
case ×1
in-operator ×1
mutate ×1
pivot ×1
pivot-table ×1
plsql ×1
postgresql ×1
sum ×1
variables ×1