我需要根据 CASE 语句为我的选择分配两个值。伪:
select
userid
, case
when name in ('A', 'B') then 'Apple'
when name in ('C', 'D') then 'Pear'
end as snack
from
table
;
Run Code Online (Sandbox Code Playgroud)
我正在为 分配一个值snack。但假设我还想drink根据相同的条件为另一个变量分配一个值。一种方法是重复上述内容:
select
userid
, case
when name in ('A', 'B') then 'Apple'
when name in ('C', 'D') then 'Pear'
end as snack
, case
when name in ('A', 'B') then 'Milk'
when name in ('C', 'D') then 'Cola'
end as drink
from
table
;
Run Code Online (Sandbox Code Playgroud)
但是,如果我必须根据相同的条件分配更多值,例如、food、等,则此代码将变得难以维护。drink …
我想将枚举常量用于 switch-case-语句。
我正在使用以下枚举/类:
public enum Cons {
ONE(1),
TWO(2);
private final int val;
private Cons(final int newVal) {
val = newVal;
}
public int getVal() {
return val;
}
}
public class Main {
public static void main(String[] args) {
int test;
// some code
switch(test) {
case Cons.ONE.getVal():
// ...
break;
case Cons.TWO.getVal():
// ...
break;
default:
// ...
}
}
}
Run Code Online (Sandbox Code Playgroud)
问题:
“case 表达式必须是常量表达式” => 我的枚举的值不是常量,尽管该属性private final int val声明为final.
我如何使用这个枚举来进行案例陈述?
在Ruby中,有没有办法获取case语句的隐含对象?
case 2+2
when '2'
puts '2'
else
puts "#{some_object}"
end
Run Code Online (Sandbox Code Playgroud)
其中'some_object'将是由case评估的任何语句的返回值
我早上很慢.我认为在case语句中引用现有的val会没问题.但它似乎被解释为局部变量定义.一个基本的谷歌搜索没有帮助,我没有我的楼梯书.
在下面,什么是允许我匹配案例(b,c)的语法?
scala> val (a,b,c) = (1,2,3)
a: Int = 1
b: Int = 2
c: Int = 3
scala> (2,3) match {
| case (a,b) => 100
| case (b,c) => 200
| case _ => 999
| }
<console>:8: error: unreachable code
case (b,c) => 200
Run Code Online (Sandbox Code Playgroud) 我有一个像下面的查询结构,我想知道是否有办法将选择查询写为一个使用CASE语句或通过其他方式,以便值根据其值插入适当的变量.
DECLARE passes INT;
DECLARE fails INT;
..
SELECT count(score)
INTO passes
FROM scores
WHERE score >= 40;
SELECT count(score)
INTO fails
FROM scores
WHERE score < 40;
Run Code Online (Sandbox Code Playgroud)
默多克想出了一个解决这个问题的简洁方法,我只需对其进行一次修改就可以将每个值放入各自的变量中
SELECT *
INTO passes, fails
FROM (SELECT SUM(CASE
WHEN score >= 40 THEN 1
ELSE 0
END) AS _passes,
SUM(CASE
WHEN score < 40 THEN 1
ELSE 0
END) AS _fails
FROM scores) AS x;
Run Code Online (Sandbox Code Playgroud) 我正在尝试为数据库编写一个查询,该数据库将表连接到查找表,结果将根据case语句返回.
在普通的SQL中,查询看起来像这样:
SELECT chis_id, chis_detail, cilt.mhcatID, cilt.mhtID, 'TheFileName' =
CASE
WHEN cilt.mhcatID IS NOT NULL AND cilt.mhtID IS NOT NULL THEN chis_linked_filename
END
FROM chis
LEFT JOIN cilt on cilt.mhcatID = chis.mhcat_id AND cilt.mhtID = chis.mht_id
WHERE cch_id = 50
Run Code Online (Sandbox Code Playgroud)
chis是被查询的表,cilt是一个查找表,并且不包含任何与chis的外键关系(chis分别由mhtID和mhcatID存在于mht和mhcat表中的FK).
该查询将用于返回记录的历史更新列表.如果与cilt查找表的连接成功,则意味着查询的调用者将有权查看历史更新的任何关联文件的文件名.
虽然在我的研究过程中我发现了各种关于如何在Linq中实现案例陈述和左联接到实体查询的帖子,但我还是没有能够找到如何加入两个不同的领域.这可能吗?
linq-to-entities entity-framework left-join case-statement entity-framework-4
我被要求实现一个使用以下配置文件的函数:
maybe_divide :: Maybe Integer -> Maybe Integer -> Maybe Integer
Run Code Online (Sandbox Code Playgroud)
并以下列方式回应:
> maybe_divide (Just 5) (Just 2)
Just 2
> maybe_divide (Just (-5)) (Just 2)
Just (-3)
> maybe_divide (Just (-5)) (Just 0)
Nothing
> maybe_divide Nothing (Just 1)
Nothing
> maybe_divide (Just 1) Nothing
Nothing
Run Code Online (Sandbox Code Playgroud)
我写了以下但它不会编译.你们有什么建议吗?
maybe_divide :: Maybe Integer -> Maybe Integer -> Maybe Integer
maybe_divide x y = case x of
Just x' -> case y of
Just y'
| y' == 0 -> Nothing
| …Run Code Online (Sandbox Code Playgroud) 您好,由于我的代码错误,我丢失了一些东西。
select * from ##ScheduleDetail SD
left join ##HolidayFilterTbl HF on SD.Scheduledate = HF.Testdate
where (ScheduleDate = testdate)
and
(Case
when HF.IsHoliday = 1 then (overtime = 1 and makeup = 0)
else
(overtime = 0 and Makeup = 0)
end
)
and
DOW = 5
order by ActivityStartTime
Run Code Online (Sandbox Code Playgroud)
我尝试了几种组合,但每种组合都在第一个等号或第二个等号处出错。我缺少什么?
是否可以合并cases共享作业并重复case未共享的作业,还是最好将每个作业分开?
用一个简单的例子来说明..case 0并且180两者都包含w = 330,因此它们已合并;每个分配的值x都不同,因此它们会重复进行x分配。
switch(window.orientation) {
case 0:
case 180:
w = 330;
//break
case 0:
x = '-180px';
//break
case -90:
case 90:
w = 480;
x = '0';
break;
case 180:
x = '-80px';
break;
}
Run Code Online (Sandbox Code Playgroud) 我已经环顾了一段时间,所以如果我使用了不正确的术语,请原谅我......
代码的目标是如果输入为 0,则更新 Aout1 和 Aout0,输出对应于 7 段显示,但我收到以下错误:
“错误 (10170):FourBitAdder.v(55) 文本附近的 Verilog HDL 语法错误:“,”;期待“;”。检查并修复紧邻指定关键字之前或之后出现的任何语法错误。”
下面是给我带来问题的代码片段......
always @*
case (A)
4'b0000 : Aout1 = 7'b1000000, Aout0 = 7'b1000000; //00
Run Code Online (Sandbox Code Playgroud)
我尝试将代码更改为以下内容,虽然我的软件没有出现任何错误,但我的硬件(7 段显示器)无法像我尝试仅更改每种情况下的一个变量时那样工作。
always @*
case (A)
4'b0000 : Aout1 = 7'b1000000; 4'b0000 : Aout0 = 7'b1000000; //00
Run Code Online (Sandbox Code Playgroud)
先感谢您 :)
case-statement ×10
sql ×3
case ×1
enums ×1
haskell ×1
java ×1
javascript ×1
left-join ×1
maybe ×1
mysql ×1
optimization ×1
ruby ×1
scala ×1
select ×1
sql-server ×1
verilog ×1
where-clause ×1