Sql 导致错误的CASE语句 declare@JANORG int; 声明@FEBORG int; 声明@MARORG int; 声明@APRORG int; 声明@MAYORG int; 声明@JUNORG int; 声明@JULORG int; 声明@augorgint; 声明@seborg int; 声明@OCTORG int; 声明@NOVORG int; 声明@DECORG int; 挑选 p、 orgid,p.projid,bomitem.fk_itemid,p.budgetyear, 金额(铸造((物料清单组件附件*bomitem.itemqty*@JANORG)/100作为整数)), 金额(铸造((物料清单组件附件*物料清单项目数量*@FEBORG)/100作为整数)), 金额(铸造((bom.component_attachrate*bomitem.itemqty*@MARORG)/100作为整数)), 金额(铸造((物料清单组件附件*bomitem.itemqty*@Aprog)/100作为整数)), 总额(铸件((物料清单组件附件*物料清单项目数量*@MAYORG)/100作为整数)), 金额(铸造((物料清单组件附件*物料清单项目数量*@JUNORG)/100作为整数)), 金额(铸造((物料清单组件附件*bomitem.itemqty*@JULORG)/100作为整数)), 金额(铸造((物料清单组件附件*bomitem.itemqty*@AUGORG)/100作为整数)), 金额(铸造((bom.component_attachrate*bomitem.itemqty*@SEPORG)/100作为整数)), 金额(铸造((物料清单组件附件*物料清单项目数量*@OCTORG)/100作为整数)), 金额(铸造((物料清单组件附件*物料清单项目数量*@NOVORG)/100作为整数)), 金额(铸造((物料清单组件附件*物料清单项目数量*@DECORG)/100作为整型)) 从…起 参考VHF组件bom、VHF组件bom和项目bom, 甚高频无线电广播v、甚高频系统项目、甚高频组织项目 哪里 bom.pk_ID=bomitem.fk_bomid 和p.budgetyear=o.budgetyear 当v.JANORG='0'时,CASE@JANORG;当v.JANAREA='0'时,则v.JANAREA ELSE p.JANORG结束, 案例@FEBORG当v.FEBORG“0”时,则v.FEBORG当v.FEBAREA“0”时,则v.FEBAREA ELSE p.FEBORG结束, CASE@MARORG当v.MARORG“0”时,则v.MARORG当v.MARAREA“0”时,则v.MARAREA ELSE p.MARORG结束, CASE@aprog当v.aprog为“0”时,则v.aprog当v.APRAREA为“0”时,则v.APRAREA ELSE p.aprog结束, CASE@MAYORG当v.MAYORG“0”时,则v.MAYORG当v.MAYAREA“0”时,则v.MAYAREA ELSE p.MAYORG结束, CASE@JUNORG当v.JUNORG“0”时,则v.JUNORG当v.JUNAREA“0”时,则v.JUNAREA ELSE p.JUNORG结束, CASE@JULORG当v.JULORG“0”时,v.JULORG当v.JULAREA“0”时,v.JULAREA ELSE p.JULORG结束, CASE@AUGORG当v.AUGORG“0”时,则v.AUGORG当v.AUGAREA“0”时,则v.AUGAREA ELSE p.AUGORG结束, CASE@SEPORG当v.SEPORG“0”时,v.SEPORG当v.seprea“0”时,v.seprea ELSE p.SEPORG结束, CASE@OCTORG当v.OCTORG“0”时,则v.OCTORG当v.OCTAREA“0”时,则v.OCTAREA ELSE p.OCTORG结束, 案例@NOVORG当v.NOVORG“0”时,则v.NOVORG当v.NOVAREA“0”时,则v.NOVAREA ELSE p.NOVORG结束, 案例@DECORG当v.DECORG“0”时,然后v.DECORG当v.decora“0”时,然后v.decora ELSE p.DECORG结束 分组 bomitem.fk_itemid,p.orgid,p.projid,bomitem.fk_itemid,p.budgetyear

Sql 导致错误的CASE语句 declare@JANORG int; 声明@FEBORG int; 声明@MARORG int; 声明@APRORG int; 声明@MAYORG int; 声明@JUNORG int; 声明@JULORG int; 声明@augorgint; 声明@seborg int; 声明@OCTORG int; 声明@NOVORG int; 声明@DECORG int; 挑选 p、 orgid,p.projid,bomitem.fk_itemid,p.budgetyear, 金额(铸造((物料清单组件附件*bomitem.itemqty*@JANORG)/100作为整数)), 金额(铸造((物料清单组件附件*物料清单项目数量*@FEBORG)/100作为整数)), 金额(铸造((bom.component_attachrate*bomitem.itemqty*@MARORG)/100作为整数)), 金额(铸造((物料清单组件附件*bomitem.itemqty*@Aprog)/100作为整数)), 总额(铸件((物料清单组件附件*物料清单项目数量*@MAYORG)/100作为整数)), 金额(铸造((物料清单组件附件*物料清单项目数量*@JUNORG)/100作为整数)), 金额(铸造((物料清单组件附件*bomitem.itemqty*@JULORG)/100作为整数)), 金额(铸造((物料清单组件附件*bomitem.itemqty*@AUGORG)/100作为整数)), 金额(铸造((bom.component_attachrate*bomitem.itemqty*@SEPORG)/100作为整数)), 金额(铸造((物料清单组件附件*物料清单项目数量*@OCTORG)/100作为整数)), 金额(铸造((物料清单组件附件*物料清单项目数量*@NOVORG)/100作为整数)), 金额(铸造((物料清单组件附件*物料清单项目数量*@DECORG)/100作为整型)) 从…起 参考VHF组件bom、VHF组件bom和项目bom, 甚高频无线电广播v、甚高频系统项目、甚高频组织项目 哪里 bom.pk_ID=bomitem.fk_bomid 和p.budgetyear=o.budgetyear 当v.JANORG='0'时,CASE@JANORG;当v.JANAREA='0'时,则v.JANAREA ELSE p.JANORG结束, 案例@FEBORG当v.FEBORG“0”时,则v.FEBORG当v.FEBAREA“0”时,则v.FEBAREA ELSE p.FEBORG结束, CASE@MARORG当v.MARORG“0”时,则v.MARORG当v.MARAREA“0”时,则v.MARAREA ELSE p.MARORG结束, CASE@aprog当v.aprog为“0”时,则v.aprog当v.APRAREA为“0”时,则v.APRAREA ELSE p.aprog结束, CASE@MAYORG当v.MAYORG“0”时,则v.MAYORG当v.MAYAREA“0”时,则v.MAYAREA ELSE p.MAYORG结束, CASE@JUNORG当v.JUNORG“0”时,则v.JUNORG当v.JUNAREA“0”时,则v.JUNAREA ELSE p.JUNORG结束, CASE@JULORG当v.JULORG“0”时,v.JULORG当v.JULAREA“0”时,v.JULAREA ELSE p.JULORG结束, CASE@AUGORG当v.AUGORG“0”时,则v.AUGORG当v.AUGAREA“0”时,则v.AUGAREA ELSE p.AUGORG结束, CASE@SEPORG当v.SEPORG“0”时,v.SEPORG当v.seprea“0”时,v.seprea ELSE p.SEPORG结束, CASE@OCTORG当v.OCTORG“0”时,则v.OCTORG当v.OCTAREA“0”时,则v.OCTAREA ELSE p.OCTORG结束, 案例@NOVORG当v.NOVORG“0”时,则v.NOVORG当v.NOVAREA“0”时,则v.NOVAREA ELSE p.NOVORG结束, 案例@DECORG当v.DECORG“0”时,然后v.DECORG当v.decora“0”时,然后v.decora ELSE p.DECORG结束 分组 bomitem.fk_itemid,p.orgid,p.projid,bomitem.fk_itemid,p.budgetyear,sql,database,sql-server-2008,Sql,Database,Sql Server 2008,我收到一个错误,case语句*的case表达式的语法不正确,不符合两种正确格式中的任何一种。您可以确定要与之进行一次比较的值: declare @JANORG int; declare @FEBORG int; declare @MARORG int; declare @APRORG int; declare @MAYORG int; declare @JUNORG int; declare @JULORG int; declare @AUGORG int; declare @SEPORG i

我收到一个错误,case语句*

case
表达式的语法不正确,不符合两种正确格式中的任何一种。您可以确定要与之进行一次比较的值:

declare @JANORG int;
declare @FEBORG int;
declare @MARORG int;
declare @APRORG int;
declare @MAYORG int; 
declare @JUNORG int;
declare @JULORG int;
declare @AUGORG int;
declare @SEPORG int;
declare @OCTORG int;
declare @NOVORG int;
declare @DECORG int;

select 
    p.orgid, p.projid, bomitem.fk_itemid, p.budgetyear,
    SUM(cast((bom.component_attachrate*bomitem.itemqty*@JANORG)/100 AS INT)),
    SUM(cast((bom.component_attachrate*bomitem.itemqty*@FEBORG)/100 AS INT)),
    SUM(cast((bom.component_attachrate*bomitem.itemqty*@MARORG)/100 AS INT)),
    SUM(cast((bom.component_attachrate*bomitem.itemqty*@APRORG)/100 AS INT)),
    SUM(cast((bom.component_attachrate*bomitem.itemqty*@MAYORG)/100 AS INT)),
    SUM(cast((bom.component_attachrate*bomitem.itemqty*@JUNORG)/100 AS INT)),
    SUM(cast((bom.component_attachrate*bomitem.itemqty*@JULORG)/100 AS INT)),
    SUM(cast((bom.component_attachrate*bomitem.itemqty*@AUGORG)/100 AS INT)),
    SUM(cast((bom.component_attachrate*bomitem.itemqty*@SEPORG)/100 AS INT)),
    SUM(cast((bom.component_attachrate*bomitem.itemqty*@OCTORG)/100 AS INT)),
    SUM(cast((bom.component_attachrate*bomitem.itemqty*@NOVORG)/100 AS INT)),
    SUM(cast((bom.component_attachrate*bomitem.itemqty*@DECORG)/100 AS INT)) 
from 
    REF_VHF_COMPONENT bom, VHF_COMPONENT_ITEMS bomitem,
    VHF_PRJFCAST v, VHF_SYSGEN_PROJ p, VHF_ORGPT o 
where  
    bom.pk_ID = bomitem.fk_bomid
    and p.budgetyear = o.budgetyear 
    and CASE @JANORG WHEN v.JANORG = '0' THEN v.JANORG WHEN v.JANAREA = '0'                THEN     v.JANAREA ELSE p.JANORG END,
 CASE @FEBORG WHEN v.FEBORG <> '0' THEN v.FEBORG WHEN v.FEBAREA <> '0' THEN        v.FEBAREA ELSE p.FEBORG END,
          CASE @MARORG WHEN v.MARORG <> '0' THEN v.MARORG WHEN v.MARAREA <> '0' THEN v.MARAREA ELSE p.MARORG END,
 CASE @APRORG WHEN v.APRORG <> '0' THEN v.APRORG WHEN v.APRAREA <> '0' THEN v.APRAREA ELSE p.APRORG END,
 CASE @MAYORG WHEN v.MAYORG <> '0' THEN v.MAYORG WHEN v.MAYAREA <> '0' THEN v.MAYAREA ELSE p.MAYORG END,
 CASE @JUNORG WHEN v.JUNORG <> '0' THEN v.JUNORG WHEN v.JUNAREA <> '0' THEN v.JUNAREA ELSE p.JUNORG END,
 CASE @JULORG WHEN v.JULORG <> '0' THEN v.JULORG WHEN v.JULAREA <> '0' THEN v.JULAREA ELSE p.JULORG END,
 CASE @AUGORG WHEN v.AUGORG <> '0' THEN v.AUGORG WHEN v.AUGAREA <> '0' THEN v.AUGAREA ELSE p.AUGORG END,
 CASE @SEPORG WHEN v.SEPORG <> '0' THEN v.SEPORG WHEN v.SEPAREA <> '0' THEN v.SEPAREA ELSE p.SEPORG END,
 CASE @OCTORG WHEN v.OCTORG <> '0' THEN v.OCTORG WHEN v.OCTAREA <> '0' THEN v.OCTAREA ELSE p.OCTORG END,
 CASE @NOVORG WHEN v.NOVORG <> '0' THEN v.NOVORG WHEN v.NOVAREA <> '0' THEN v.NOVAREA ELSE p.NOVORG END,
 CASE @DECORG WHEN v.DECORG <> '0' THEN v.DECORG WHEN v.DECAREA <> '0' THEN v.DECAREA ELSE p.DECORG END 
group by 
    bomitem.fk_itemid, p.orgid, p.projid, bomitem.fk_itemid, p.budgetyear
或者您可以使用更灵活的格式,其中每个
WHEN
都有可引用不同字段的综合标准:

CASE col1 WHEN 'dog' THEN 1
          WHEN 'cat' THEN 2
          WHEN 'horse' THEN 3
END
不清楚您试图对您的
大小写
表达式执行什么操作。如果要使用它们进行筛选,则需要根据其他内容计算
大小写
表达式:

CASE WHEN col1 = 'dog' THEN 1
     WHEN col2 = 'horse' THEN 1
     WHEN col3 = 'cat' THEN 2
END

看,我正试图将这些值存储在一个变量中,因为我在下一个语句中需要它们,如果我用这个例子,当v.JANORG'0'然后v.JANORG当v.JANAREA'0'然后v.JANAREA ELSE p.JANORG END=@JANORG,这意味着我需要JANORG的值,以便我可以在计算中使用它们,我仍然不太明白你的意思,但是表达式格式不正确,
WHERE
子句、
CASE
表达式必须采用我提到的两种方式之一进行格式化,
WHERE
子句不能有逗号分隔的条件列表。如果您试图设置这些变量的值,它将在
集合
选择
中进行,但不能在
INT
中存储多行。也许您可以展示您在哪里尝试使用这些变量在ANSI-92 SQL标准(20多年前)中,旧样式的逗号分隔表列表样式被正确的ANSI
JOIN
语法所取代,它的使用不受欢迎。您的代码没有意义,我不确定您要做什么。仅取第一个
CASE
表达式,忽略其他表达式,并假设
JANORG
为“0”,我们得到以下
WHERE
子句:
bom.pk\u ID=bomitem.fk\u bomid和p.budgetyear=o.budgetyear和v.JANORG
。那是不完整的。使用
v.JANORG
应该做什么?
WHERE CASE ... END = @variable1
  AND CASE ... END = @variable2