我有一个SELECT语句是从一个CASE WHEN THEN状态(或者可以使用多个IF语句)别名为'Length'计算的,我需要正确地将结果组合在一起.SELECT似乎正在工作,但该组将它们分组错误.这是我的发言:
SELECT CASE
WHEN DATEDIFF(o.EndDate, o.StartDate) < 30 THEN '<1 Month'
WHEN DATEDIFF(o.EndDate, o.StartDate) < 90 THEN '1 - 2 Months'
WHEN DATEDIFF(o.EndDate, o.StartDate) < 210 THEN '3 - 4 Months'
ELSE '>4 Months' END AS 'Length',
COUNT(DISTINCT(person.ID)) AS 'COUNT'
FROM person
INNER JOIN opportunity AS o
INNER JOIN Organization AS org
ON person.EntityID = o.id
AND O.OrganizationID = Org.ID
WHERE person.TitleID = 2
AND o.bID = 1
GROUP BY 'Length'
ORDER BY 'Length' ASC;
Run Code Online (Sandbox Code Playgroud)
这将所有结果分组为'3 - 4个月',这是不对的..
我想使用case语句更新表中的多个列,但我找不到如何执行此操作(这是否可行).我想出了以下无效的引用查询:
UPDATE tablename SET
CASE name
WHEN 'name1' THEN col1=5,col2=''
WHEN 'name2' THEN col1=3,col2='whatever'
ELSE col1=0,col2=''
END;
Run Code Online (Sandbox Code Playgroud)
有没有办法用有效的SQL实现预期的结果?
在我使用任何编程语言的1个月经验中,我假设switch
case
条件会接受括号中的任何内容作为布尔检查thingamajig,即:
|| && < >
Run Code Online (Sandbox Code Playgroud)
明白我的意思了吗?
就像是
char someChar = 'w';
switch (someChar) {
case ('W' ||'w'):
System.out.println ("W or w");
}
Run Code Online (Sandbox Code Playgroud)
可悲的是,似乎没有这样的方式.我不能在switch case中进行布尔检查.
有办法解决吗?
顺便说一句,如果我听起来很混乱,非常抱歉.我还不太清楚这种语言的所有名称:X
任何答案都赞赏
我有一个程序,用户输入一个名称列表.我有一个开关案例转到一个函数,我希望按字母顺序打印名称.
public static void orderedGuests(String[] hotel)
{
//??
}
Run Code Online (Sandbox Code Playgroud)
我试过了两个
Arrays.sort(hotel);
System.out.println(Arrays.toString(hotel));
Run Code Online (Sandbox Code Playgroud)
和
java.util.Collections.sort(hotel);
Run Code Online (Sandbox Code Playgroud) 是否有任何有PHP和Laravel Eloquent经验的人可以帮我解决这个问题?我正在尝试注入一个CASE ... WHEN .. END ...在raw()方法中.它似乎完全被忽略了.现有的文件还没有.我尝试了几种不同的东西,但没有占上风.我试图解决这个问题:
SELECT shares.id, ...,
CASE WHEN users.id = <CurrentUser> THEN 1 ELSE 0 END AS is_user,
...
FROM <table>
...
Run Code Online (Sandbox Code Playgroud)
源代码如下:
$shares = Share::where('shares.status', '=', SHARE_STATUS_APPROVED)
->where('shares.deleted', '=', '0')
->where('locations.lat', '<=', $nelat)
->where('locations.lat', '>=', $swlat)
->where('locations.lng', '>=', $nelng)
->where('locations.lng', '<=', $swlng)
->where('users.id', '=', $user)
->orWhere('shares.connected_user_id', '=', $user)
->join('users', 'shares.user_id', '=', 'users.id')
->join('locations', 'locations.id', '=', 'users.location_id')
->join('provinces', 'provinces.id', '=', 'locations.province_id')
->join('countries', 'countries.id', '=', 'locations.country_id')
->select('shares.id AS share_id', 'users.id AS user_id', 'shares.connected_user_id', 'shares.original_language_id', 'shares.image',
'users.first_name', 'users.last_name', …
Run Code Online (Sandbox Code Playgroud) 我有这个表结构表prices
:
CREATE TABLE prices
(
id int,
priceFrom int,
priceUp int
);
INSERT INTO prices (id, priceFrom, priceUp)
VALUES (1, 23, 23), (2, 0, 0), (3, 12, 13),
(4, 40, 40), (5, 15, 15), (6, 0, 0);
Run Code Online (Sandbox Code Playgroud)
这是结果:
我有这个问题:
select
pricefrom, priceup,
case
when pricefrom = 0 then null
when priceFrom <> priceUp then priceFrom + ' - ' + priceUp
when priceFrom = priceUp then priceFrom
end as FinalPrice
from
prices
Run Code Online (Sandbox Code Playgroud)
我需要的是做一个案例
我有一个帐户表和一个帐户有多个记录的记录表.我想按"记录数"范围细分帐户总数.即显示细分
Count of Records | Count
=========================
0-25 | 100
25 - 50 | 122
50 - 100 | 300
Run Code Online (Sandbox Code Playgroud)
等等.
我使用以下查询,但我无法通过"grp"分组,这是我想要的,修改查询的最佳方法的任何帮助?
SELECT count(*) as ct,
CASE
WHEN COUNT(*) < 25 THEN '1-25'
WHEN COUNT(*) >= 25 < 50 THEN '25-50'
WHEN COUNT(*) >= 50 < 100 THEN '50-100'
WHEN COUNT(*) >= 100 < 250 THEN '100-250'
WHEN COUNT(*) >= 250 < 500 THEN '250-500'
WHEN COUNT(*) >= 500 < 1000 THEN '500-1000'
ELSE '1000+'
END AS grp
FROM records …
Run Code Online (Sandbox Code Playgroud) 我想可能与以前的SO问题有一些重叠,但我找不到关于这个主题的Delphi特定问题.
假设您要检查无符号的32位整数变量"MyAction"是否等于任何常量ACTION1,ACTION2,...,ACTIONn,其中n是 - 比如说1000.我想,除了更优雅之外,
case MyAction of
ACTION1: {code};
ACTION2: {code};
...
ACTIONn: {code};
end;
Run Code Online (Sandbox Code Playgroud)
比...快得多
if MyAction = ACTION1 then
// code
else if MyAction = ACTION2 then
// code
...
else if MyAction = ACTIONn then
// code;
Run Code Online (Sandbox Code Playgroud)
我猜if if变量需要时间O(n)来完成(即找到正确的动作)如果正确的动作ACTIONi具有高的i值,而case变量需要更少的时间(O(1)?) .
我有以下PowerShell脚本:
$RegExplorer = Get-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters
$NullSessionPipes = "$($RegExplorer.NullSessionPipes)"
$NullSessionPipes
$NullSessionPipes = $NullSessionPipes.replace("browser", "")
$NullSessionPipes
Run Code Online (Sandbox Code Playgroud)
只要注册表项检查与我指定的情况完全匹配 - "浏览器",该脚本就可以正常工作.
但是,如果注册表项中的情况不同,则说"浏览器"或"浏览器"则不进行替换.
我正在寻找一些方法来使string.replace不区分大小写.我知道我可以首先使用.tolower或.toupper转换字符串以使比较更容易,但我不知道这个特定的注册表项或访问它的应用程序是否区分大小写,所以我不想更改现有的关键.
是否有捷径可寻?
我正在使用嵌入在其他一些C#代码中的SQL server语句; 并且只想检查我的表中是否存在列.
如果列(ModifiedByUSer
此处)确实存在,那么我想返回1或者true ; 如果没有那么我想返回0或false(或类似的东西,可以在C#中解释).
我已经使用了如下的CASE语句:
SELECT cast(case WHEN EXISTS (select ModifiedByUser from Tags)
THEN 0
ELSE 1
END as bit)
Run Code Online (Sandbox Code Playgroud)
但是如果ModifiedByUser不存在那么我得到一个invalid column name
,而不是返回值.
我也考虑过:
IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'Tags' AND COLUMN_NAME = 'ModifiedByUser')
BEGIN // Do something here to return a value
END
Run Code Online (Sandbox Code Playgroud)
但是不知道如何基于结果有条件地返回值/ bool/bit.任何帮助非常感谢!
case ×10
sql ×5
mysql ×3
java ×2
sql-server ×2
arrays ×1
boolean ×1
delphi ×1
eloquent ×1
function ×1
group-by ×1
if-statement ×1
laravel ×1
performance ×1
powershell ×1
replace ×1
select ×1