标签: case

sql server 2008中的case子查询

以下语句给出错误

打印(存在时的情况(从 tblCustomerProductsDiscount PD 选择 count(*),其中 PD.cust_ID=138 且 PD.pack_detl_ID = 1),然后 0 结束)

错误: 在此上下文中不允许子查询。仅允许使用标量表达式。

sql case sql-server-2008

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

按自定义列过滤 SQL

我想知道是否可以根据查询中的“样式”列轻松过滤结果。

select distinct
  m.ManagerName, 
  p.ProductName, 
  p.slocumrank,
  case 
    when s2.SubType2ID = 45 then 'Large Cap' 
    else s2.SubType2Name 
  End + ' ' + s1.SubType1Name as 'Style'
from QuantPerformance qp
where Style = 'ABCD'
Run Code Online (Sandbox Code Playgroud)

目前,我的 where 语句过滤掉了所有内容。

sql-server filtering case

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

使用 COUNT(column) SQL Server 时返回 NULL 而不是 0

我查询哪个运行良好并且它执行两种类型的工作,COUNT 并且SUM.

就像是

select 
    id,
    Count (contracts) as countcontracts,
    count(something1),
    count(something1),
    count(something1),
    sum(cost) as sumCost
from 
    table
group by 
    id
Run Code Online (Sandbox Code Playgroud)

我的问题是:如果给定 ID 没有合约,它将返回 0 forCOUNTNullfor SUM。我想看到 null 而不是 0

我正在考虑这种情况,Count (contracts) = 0 then null else Count (contracts) end但我不想这样做,因为我在查询中有超过 12 个计数位置及其预先拥有的大量记录,所以我认为这可能会降低查询性能。

还有其他方法可以用 代替 0 吗NULL

sql sql-server null case

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

在 DATEADD 区间使用 case 表达式

是否可以在 DATEADD 间隔参数中使用 case 表达式?

select DATEADD(case c1 when 1 then HOUR when 2 then DAY end, c2, date) from T
Run Code Online (Sandbox Code Playgroud)

Update1:对不起,我想在 where 子句中使用它

select * from T where DATEADD(case c1 when 1 then HOUR when 2 then DAY end, c2, date) < GETDATE()
Run Code Online (Sandbox Code Playgroud)

也许还有另一种选择。

提前致谢,

sql sql-server case dateadd

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

在 bash 的 case 语句中使用命令参数

我有一个 case 语句,它是我命令的一部分,我希望它遍历所有 args,直到它们都被消耗掉。

while [ ! -z ${@:2} ] ; do
    case "${@:2}" in
        -d|--delete*)
            YES_DELETE=1
            shift
            ;;        
        -nd|--nodelete*)
            NO_DELETE=1
            shift
            ;;
        -y|--yes*)
            SKIP_PROMPT=1
            shift
            ;;
        -*|*)
            echo "Bad command, try again."
            ;;
    esac
done
Run Code Online (Sandbox Code Playgroud)

我的命令$@$ mpip stt=12 -nd -y使${@:2}="-nd -y". 如果它也像我想要的那样工作,它会在迭代两次后退出 while 循环并且NO_DELETE=1 SKIP_PROMPT=1为真。当我运行它时,一切都还没有初始化,它变成了一个无限循环,我不知道我做错了什么。

linux bash case

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

如何根据下面的查询编写嵌套的 CASE 语句?

我正在使用CASEstatement 来创建 column Quoted。所以它会显示值 1 或 0。

但是DisplayStatus必须根据前一列的条件创建列Quoted

在这种情况下,我似乎应该使用嵌套的 CASE 语句。但我无法提出正确的查询。

SELECT 
       case when isnull(grouptt.controlno,0) <>0 AND  isnull(vwR.Premium,0) > 0 then 
      cast( 1 as bit)
      else cast( 0 as bit)
      end as Quoted,

      CASE 
           WHEN a.DisplayStatus = 'LOST' AND quoted=1  THEN 'Quoted_Lost'
           WHEN a.DisplayStatus = 'DECLINED' AND quoted=1  THEN 'Quoted_NotTakenUp'
           WHEN a.DisplayStatus = 'NOT TAKEN UP' AND quoted=1  THEN 'Quoted_Lost'
           ELSE
                  a.DisplayStatus
      END
      DisplayStatus
    FROM MyTable 
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server case

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

在解码中使用 AND 条件

我有一个场景,我需要检查日期和值来确定结果。

前任-

case when my_date > '10-01-2011' and my_value = 0 then
'Do this'
else 
'Do that'
end
Run Code Online (Sandbox Code Playgroud)

我试图在 oracle SQL 查询中使用它,我想知道是否有更好的方法来处理这个逻辑而不是使用 case 语句;也许使用 decode 或任何其他 oracle 函数。

sql oracle decode case

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

带窗口函数的 CASE 语句

桌子

桌子

有人可以帮助我寻找解决方案来使每个商店商品对的计数正确。第一个数很容易

COUNT (*) OVER(PARTITION BY store ORDER BY s.deptitemcode DESC) StoreItemSeqNo

然而,对于第二次计数,如果每个商店项目对的标志为真,如果标志为假,我只想要计数,那么计数应该是前一个值,如果没有前一个值,它应该是零。

参考表格示例

sql case window-functions

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

错误:运算符不存在:字符变化 = 布尔值

我有以下查询:

SELECT
CASE
    tbl_appointment_types."name" 
    WHEN tbl_appointment_types."name" LIKE 'Refill-ART' THEN
    'Re-Fill' 
    WHEN tbl_appointment_types."name" = 'Enhanced Adherence'::character varying THEN
    'Enhanced Adherence' 
    WHEN tbl_appointment_types."name" = 'PHARMACY APPOINTMENT'::character varying THEN
    'Re-Fill' ELSE tbl_appointment_types."name" 
END 
FROM
    tbl_appointment INNER JOIN tbl_appointment_types ON tbl_appointment_types."id" = tbl_appointment.app_type_1 
GROUP BY
    tbl_appointment_types."name";
Run Code Online (Sandbox Code Playgroud)

当我尝试运行它时,出现以下错误:

> ERROR:  operator does not exist: character varying = boolean
  LINE 4:  WHEN tbl_appointment_types."name" LIKE 'Refill-ART' THEN
           ^
  HINT:  No operator matches the given name and argument type(s). You might need to add explicit type casts.

> …
Run Code Online (Sandbox Code Playgroud)

sql postgresql case

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

你如何接受一个 switch case 的多个值?

如何在 C++ 中为单个案例接受多个值?我知道您可以使用case 1..2其他一些语言为一个案例(例如)设置一系列值,但它似乎不适用于 Xcode 上的 C++。

int main() {
    int input;
    cin >> input;
    switch (input) {
        case 1:
            cout << "option 1 \n";
            break;
        case 2..3: //This is where the error occurs
            cout << "option 2 and 3 \n";
            break;
        
        default:
            break;
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

该程序显示错误,指出“浮动常量上的后缀无效'.3'”范围所在。

c++ case switch-statement

1
推荐指数
2
解决办法
66
查看次数