【发布时间】:2018-12-02 10:34:29
【问题描述】:
假设我有两张桌子。一个表 tbl1 是“长的”且非聚合的。结构如下:
Software_Name:
Word
PowerPoint
PowerPoint
Excel
Word
PowerPoint
在第二个表 tbl2 中,我想总结第一个表中的数据,即 Software 的计数。第二个表的结构如下:
Software_Name: Count:
Word 2
PowerPoint 3
Excel 1
我试过了:
update tbl2
set count =
(select count(software_name)
from tbl1
group by software_name
where tbl1.software_name = tbl2.software_name)
from tbl1
我将结果插入到正确的列中,但它不是正确的值。它是所有值的总和,在本例中为 5。我包含了 where 子句,因为在我的 tbl1 中,我有更多的软件名称,而不是对 tbl2 中的计数感兴趣。
更新 我在这个项目中使用 Teradata Aster。我一直在查看 UPDATE 命令的 Aster 文档并遇到了这个问题:
UPDATE [ ONLY ] table
SET column = expression [, ...]
[ FROM fromlist ]
[ WHERE condition | WHERE CURRENT OF cursor_name ];
在阅读 fromlist 时,我发现了以下信息:
请注意,目标表不得出现在 fromlist 中,除非您打算 自加入(在这种情况下,它必须与来自列表中的别名一起出现)。
【问题讨论】:
-
您在 group by 之后的位置...我不知道 dbms 允许什么...但是将它放在 group by 之前应该可以解决它
标签: sql count sql-update teradata-aster