我有一個名爲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