微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

时间表结果到变量不起作用

如何解决时间表结果到变量不起作用

Im托盘将时间表的结果设置为变量,这就是我做错了吗?

WITH Consolidado_B (CANTIDAD,CALIDAD) AS(
    select 
        SUM(cbs) [Cantidad],'BLANCOS' CALIDAD
    from CBases c
    inner join v_Bases v on v.CODIGO=c.basecodi
    where v.[NOMBRE COMPLeto] like '%blanco%' and
    c.colorcodi=@COLORCODI
    union
    select
        SUM(cbs),'ACCENT'
    from CBases c
    inner join v_Bases v on v.CODIGO=c.basecodi
    where v.[NOMBRE COMPLeto] like '%Acce%' 
    and c.colorcodi=@COLORCODI
)
SET @TOTALBASES=
(
SELECT sum(CANTIDAD) TOTAL 
FROM Consolidado_B
)

解决方法

因为您没有提及它,所以我猜错误消息是:子查询返回了多个值。或未定义Consolidado_B。

CTE必须与select语句一起使用,而不能与SET语句分开。

尝试一下:

    printf("List is: ");
    INT_LIST *trvPtr = start;
    while (trvPtr != NULL) {
        printf("%d ",trvPtr->number);
        trvPtr = trvPtr->next;
    }
    puts("");
,

使用只能使用SELECT。但这会更简单:

select @TOTALBASES = SUM(cbs) 
from CBases c join
     v_Bases v
     on v.CODIGO=c.basecodi
where c.colorcodi = @COLORCODI or
      (v.[NOMBRE COMPLETO] like '%blanco%'  or v.[NOMBRE COMPLETO] like '%Acce%') ;

如果[NOMBRE COMPLETO]可以同时满足这两个条件,则这不是100%等效的-您实际上希望对它们进行两次计数。但是,它的效率要高得多。在这种情况下,可以对查询进行调整以解决此问题-无需使查询复杂化。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。