A表第一列和第二列分别是名称、数量:
例如:
名称 数量
甲 1
乙 2
甲 3
乙 4
现在要增加一列:占比(在相同名称中对应数量的占比)。结果应该是这样的:
名称 数量 占比
甲 1 25%
乙 2 40%
甲 3 75%
乙 3 60%
因为占比在以后还要再用,所以要把结果写在原来的表里面,而不是通过SELECT计算。
提示:'t1' 附近有语法错误。
sm是什么意思?
上面是oralce的写法 sqlserver好像不支持呢 sm是总量
追问没事,我改了一下,可以计算了。
但是实际情况中,不只有这几列数据,还有日期,产品,等等。
求和的时候要忽略日期列和产品列。
赋值的时候会提示:子查询返回的值不止一个。当子查询跟随在 =、!=、、>= 之后,或子查询用作表达式时,这种情况是不允许的。
赋值的时候,会报错,怎么办?
子查询返回的值不止一个。当子查询跟随在 =、!=、、>= 之后,或子查询用作表达式时,这种情况是不允许的。
报错?我上面贴的代码试过了,没有问题的。你说的子查询什么的,把你的代码和场景贴出来看看,听你这么空说挺吃力的。
追问谢谢,之前的问题解决了。但是会有和为0的情况。能加一下你的Q Q吗?这样消耗的财富值太多了。
追答812184406
不好意思,为了计算精确在第二个表里面把乙的4改成3了。以第二个表为准。
是这样的:
第一条记录,名称是甲,数量是1。对所有名称为甲的数量求和,和是4。就得到占比是25%(用1除以4)。
第二条记录,名称是乙,数量是2。对所有名称为乙的数量求和,和是5。就得到占比是40%(用2除以5)。
以此类推。
where t1..名称 = t4.名称
)