标签: case

当你的别名是什么时,你可以用一个案例进行GROUP BY吗?

我有一个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个月',这是不对的..

mysql sql group-by case

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

MySQL CASE更新多个列

我想使用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实现预期的结果?

mysql sql case

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

如何处理多个条件的情况?

在我使用任何编程语言的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
任何答案都赞赏

java boolean case switch-statement

23
推荐指数
2
解决办法
5万
查看次数

按字母顺序列出字符串数组

我有一个程序,用户输入一个名称列表.我有一个开关案例转到一个函数,我希望按字母顺序打印名称.

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)

java arrays function case

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

Laravel Eloquent Select CASE?

是否有任何有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)

sql select case laravel eloquent

23
推荐指数
2
解决办法
5万
查看次数

一个值与其他值不同的情况,SQL Server

我有这个表结构表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)

我需要的是做一个案例

  1. pricefrom = 0然后显示null
  2. pricefrom = …

sql sql-server case

23
推荐指数
3
解决办法
3811
查看次数

MySQL和CASE WHEN具有一系列值

我有一个帐户表和一个帐户有多个记录的记录表.我想按"记录数"范围细分帐户总数.即显示细分

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)

mysql case

22
推荐指数
2
解决办法
7万
查看次数

德尔福表现:案例与If

我想可能与以前的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)?) .

  1. 我是否正确,开关速度更快?
  2. 我是否认为在开关盒中找到正确动作所需的时间实际上与n无关?也就是说,检查一百万个案件比检查10个案件真的需要更长的时间吗?
  3. 这究竟是如何工作的?

delphi performance if-statement case

21
推荐指数
3
解决办法
5686
查看次数

不区分大小写的PowerShell替代品

我有以下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转换字符串以使比较更容易,但我不知道这个特定的注册表项或访问它的应用程序是否区分大小写,所以我不想更改现有的关键.

是否有捷径可寻?

powershell replace case

21
推荐指数
5
解决办法
4万
查看次数

使用CASE语句检查表中是否存在列 - SQL Server

我正在使用嵌入在其他一些C#代码中的SQL server语句; 并且只想检查我的表中是否存在列.

如果列(ModifiedByUSer此处)确实存在,那么我想返回1或者true ; 如果没有那么我想返回0false(或类似的东西,可以在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.任何帮助非常感谢!

sql sql-server case

21
推荐指数
2
解决办法
12万
查看次数