我有一个名为Datatable的表。它有一个名为data
的列。无法获得正确的查询
data
-------
10
20
30
我需要得到一个列
data
-------
10/60
20/60
30/60
我写的查询作为
select data/sum(data)
from datatable;
我有一个名为Datatable的表。它有一个名为data
的列。无法获得正确的查询
data
-------
10
20
30
我需要得到一个列
data
-------
10/60
20/60
30/60
我写的查询作为
select data/sum(data)
from datatable;
尝试,
select a.data/b.total -- will result the quotient of 10/60
from datatable a,
(select SUM(data) total from datatable) b
但如果你想它要连接
select a.data + '/' + b.total -- will result literal string value of 10/60
from datatable a,
(select SUM(data) total from datatable) b
最后我检查,混合字符串和数字导致尝试将字符串转换为数字,而不是其他方式。 –
@Damien_The_Unbeliever是的,我把它们固定在小提琴链上。 –
我不知道在60值从何而来,但我会做这样的事情:
select data + '/' + sum(data) from datatable group by data
进行连结,请检查此链接: http://msdn.microsoft.com/en-us/library/aa276862(v=sql.80).aspx
希望这会有所帮助。
对于SQL Server 2005+,你可以这样做:
SELECT CAST(data AS VARCHAR(10)) + '/' + CAST(SUM(data) OVER() AS VARCHAR(10))
FROM Datatable
这工作的SQL Server 2005或更高版本上:
declare @t table (data int)
insert into @t (data) values (10),(20),(30)
select (data * 1.0)/ SUM(data) OVER() from @t
这应该在SQL Server 2005+上工作(尽管没有表变量和'VALUES'部分) – Lamak
@Lamak - 我不确定,并且没有2005实例。我知道某些聚合窗口函数在5,8和12之间发生了变化。所以我的陈述是真实的,但不是全部包含:-) –
您是否希望字面上出现“10/60”文本或计算该文本? (〜0.166) –
@Damien_The_Unbeliever我需要计算的值 – user1925921