标签: case

SQL 查询按模式排序

我正在使用这个特定的例子

https://www.w3schools.com/sql/sql_orderby.asp

我想获取按国家/地区模式排序的客户列表。

例如,Country以 开头的国家/As地区应在数字上排在第一位,然后是以 开头的国家/地区Ge,最后是以 开头的国家/地区Fr

如果我需要在该国家/地区使用 1 种模式搜索进行订购,我可以使用以下代码来实现:

SELECT * FROM Customers
ORDER BY (CASE WHEN Country LIKE 'Fr%' THEN 0
ELSE 1
END)ASC;
Run Code Online (Sandbox Code Playgroud)

如何在该ORDER BY条款中再添加 2 个条件?谢谢。

mysql sql database case sql-order-by

0
推荐指数
1
解决办法
102
查看次数

为什么Oracle中的case语句不适用于字符串比较?

我在Oracle中对此感到困惑

select case when 'hello' <> '' then 1 else 2 end from dual;
Run Code Online (Sandbox Code Playgroud)

返回2

select case when 'hello' <> 'hello' then 1 else 2 end from dual;
Run Code Online (Sandbox Code Playgroud)

返回2

然而,SQL*Server这在预期的工作.

sql database sql-server oracle case

-1
推荐指数
1
解决办法
1097
查看次数

用于在sql where子句中切换要比较的列的case语句

我有一个场景,我需要在where子句中使用的列根据变量的值更改.

例如,如果@ID与Table1中的TableID匹配,那么我将使用下面的代码

WHERE 
    Table1.TableID = CASE WHEN @ID= -1 THEN Table1.TableID ELSE @ID END
Run Code Online (Sandbox Code Playgroud)

但是,如果@ID匹配Table2的TableID,那么我需要使用

WHERE 
    Table2.TableID = CASE WHEN @ID= -1 THEN Table2.TableID ELSE @ID END
Run Code Online (Sandbox Code Playgroud)

我将如何做到这一点?OR子句在这种情况下是否有效?

编辑:尝试提供更多细节,使其更清晰.样本数据

表格1

TableID   
1
2
3
4
Run Code Online (Sandbox Code Playgroud)

表2

TableID
10
11
12
13      
Run Code Online (Sandbox Code Playgroud)

如果@ID = -1我想看到两个表中的所有行.

如果@ID = 1则仅显示表1中的第一行

如果@ID = 10,那么只显示表2中的最后一行......依此类推.

sql sql-server case where

-1
推荐指数
1
解决办法
142
查看次数

什么在核心C更有效?切换/如果声明?

注意:谢谢你告诉我,无论我怎么写,这都会毫无保留,我问的原因是因为它与我的大学任务类似,我想让我的讲师开心,是否有更"可读"代码或更好的东西,这将使我的讲师更快乐或这个代码是好的,而不是"低效".

我有一个关于我应该如何编写代码的问题,基本上我有一个switch语句,用于将char更改为特定的char,具体取决于它所处的内容.但是只有当亚麻布是一个奇数时才会改变(从0开始,所以每第二行都会选择一个新的字符).目前我的代码是......

int linenumber;
char zone = UNKNOWN;

  for (linenumber = 0; linenumber < 21; linenumber++) {

     switch (linenumber) {
        case (1):
           zone = 'a';
           break;

        case (3):
           zone = 'b';
           break;

        case (5):
           zone = 'c';
           break;

        case (7):
           zone == 'd';
           break;

        case (9):
           zone = 'e';
           break;

        case (11):
           zone = 'f';
           break;

        case (13):
           zone = 'g';
           break;

        case (15):
           zone = 'h';
           break;

        case (17):
           zone = 'i';
           break;

        case (19):
           zone = 'j';
           break; …
Run Code Online (Sandbox Code Playgroud)

c performance if-statement case switch-statement

-1
推荐指数
1
解决办法
111
查看次数

如何在SQL的CASE STATEMENT中放入三个条件?

这是我的SQL查询:

SELECT *
,CASE WHEN (ETA>10 OR Class='EOL') THEN 'Eligible' ELSE 'Not Applicable' END AS Eligible
FROM XYZtable
Run Code Online (Sandbox Code Playgroud)

结果是:

PN  PD  ETA Class   BU  Serial  Comm    frmToday    Eligible
CX  CRD 03-10   IP  07  2322    CARD    3   Not Applicable
BX  CRD 03-18   IP  05  2324    CARD    11  Eligible
MX  CRD 03-10   EOL 07  2325    CARD    3   Not Applicable
Run Code Online (Sandbox Code Playgroud)

我想在Eligible列中提到以下结果:

If ETA > 10 THEN 'Eligible'
If Class = 'EOL' THEN 'Consult Plz'
Else 'Not Applicable'
Run Code Online (Sandbox Code Playgroud)

谢谢.

sql case

-1
推荐指数
1
解决办法
1934
查看次数

如何根据参数值添加到Where子句

我有一个我想运行的SQL查询,如果我将参数标记为true,则想要在where子句中添加一些内容.我不认为我需要两次相同的sql语句,但找不到这样做的方法.这就是我要的.

DECLARE @getShipped VARCHAR = 'false'; 

SELECT DISTINCT 
    Serial_No
INTO #Serials
FROM Part_v_Container_Change2 AS CC
WHERE Change_Date <= @dateEnding
   *** AND IF @getShipped = 'true' THEN CC.Container_Status = 'Shipped' ***
Run Code Online (Sandbox Code Playgroud)

尝试过if语句和case语句但似乎无法使其工作?如果我没有,我只是不想重复sql.

sql-server if-statement case where-clause

-1
推荐指数
1
解决办法
1460
查看次数

CASE ... WHEN语句 - Oracle SQL

使用CASE ... WHEN声明我有一个艰难的世界.

我正在为我的公司建立一个小型数据库,我们正在查看销售订单.默认情况下,我们的跟踪系统将我们的订单分为10类,但我们主要关注3:A,B和C订单.我的代码看起来像:

SELECT 
    ORDER_NUM,
    BUYER_NUM, 
    CREATOR_NUM
    (CASE
        WHEN ORDER_CD = 'A' THEN 'Part'
        WHEN ORDER_CD = 'B' THEN 'Service'
        WHEN ORDER_CD = 'C' THEN 'Labor'
        ELSE 'Other'
    ) AS ORDER_TYPE
FROM tbl_ORDER
WHERE ORDER_DATE > '01-Jan-2017'
Run Code Online (Sandbox Code Playgroud)

但是,我不断收到"Missing Expression"错误.有人可以帮我理解我做错了什么吗?

谢谢!

sql oracle case

-1
推荐指数
1
解决办法
68
查看次数

Java制作开关案例的判决更短

我有这个switch case statement在我的FragmentStatePagerAdapter.我已经研究了许多类似的问题,但没有一个提供更短的答案,这意味着switch案例仍然在他们的代码中.

这段代码看起来非常重复和丑陋.有没有办法让这个看起来更短?

@Override
public SongListFragment getItem(int position) {
    SongListFragment slf = new SongListFragment();
    switch (position) {
        case 0:
            slf.setAudioList(getAudioList(tabTitles[0]));
            slf.setItemOnClickListener(new SongListFragment.SongListItemOnClickListener() {
                @Override
                public void onClick(Audio audio) {
                    itemListener.onClick(audio);
                }
            });
            return slf;
        case 1:
            slf.setAudioList(getAudioList(tabTitles[1]));
            slf.setItemOnClickListener(new SongListFragment.SongListItemOnClickListener() {
                @Override
                public void onClick(Audio audio) {
                    itemListener.onClick(audio);
                }
            });
            return slf;
        case 2:
            slf.setAudioList(getAudioList(tabTitles[2]));
            slf.setItemOnClickListener(new SongListFragment.SongListItemOnClickListener() {
                @Override
                public void onClick(Audio audio) {
                    itemListener.onClick(audio);
                }
            });
            return slf;
        case 3:
            slf.setAudioList(getAudioList(tabTitles[3]));
            slf.setItemOnClickListener(new SongListFragment.SongListItemOnClickListener() …
Run Code Online (Sandbox Code Playgroud)

java case switch-statement fragmentstatepageradapter

-1
推荐指数
1
解决办法
89
查看次数

带有嵌套 case 表达式的 GROUP BY - 有更好的方法吗?

SQL 服务器 2012

我将收取的费用根据客户成为客户的时间长短乘以不同的因素。该group by条款相当直接。但是,select当我想以不同的方式使用此标准时,我会感到尴尬:

select mp.professionals
    ,case when sl.stmndate < dateadd(year, 3, m.qClientOpenDate) then 'New' else 'Old' end age -- straight forward
    ,case (case when sl.stmndate < dateadd(year, 3, m.qClientOpenDate) then 'New' else 'Old' end) -- nested case
        when 'New' then sum(fees) * 0.5
        when 'Old' then sum(fees) * 0.25
        else 0
    end Credit
    ,case (case when sl.stmndate < dateadd(year, 3, m.qClientOpenDate) then 'New' else 'Old' end) -- nested case
        when 'New' then 'Welcome!'
        when …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server join case

-1
推荐指数
1
解决办法
204
查看次数

有没有办法在单个查询中使用 BETWEEN 子句获取日期范围内已售游戏的总数(使用或不使用 CASE 语句)?

我已经尝试过下面的代码,但它抛出一个错误:

SELECT Publisher, SUM(Global_Sales) AS total_games_sold, Year,
CASE 
WHEN Year < 1989 THEN SUM(Global_Sales)
WHEN Year BETWEEN 1990 AND 1999 THEN SUM(Global_Sales)
WHEN Year BETWEEN 2000 AND 2009 THEN SUM(Global_Sales)
ELSE Year > 2009 END AS Dates
FROM Vgsales
ORDER BY Year;
Run Code Online (Sandbox Code Playgroud)

sql sql-server date case between

-1
推荐指数
1
解决办法
82
查看次数