如何解决时间表结果到变量不起作用
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 举报,一经查实,本站将立刻删除。