简体   繁体   English

无法获得正确的查询

[英]Cannot getting Correct query

I have a table named Datatable. 我有一个名为Datatable的表。 and it has a column named data . 它有一个名为data的列。

data  
-------
10       
20    
30

i need to get a column as 我需要作为一个专栏

data  
-------
10/60   
20/60   
30/60  

i wrote the query as 我写的查询为

select data/sum(data) 
  from datatable;

For SQL Server 2005+ you can do this: 对于SQL Server 2005+,您可以执行以下操作:

SELECT CAST(data AS VARCHAR(10)) + '/' + CAST(SUM(data) OVER() AS VARCHAR(10))
FROM Datatable

try, 尝试,

select a.data / b.total       -- will result the quotient of 10/60
from   datatable a, 
       (select SUM(data) total from datatable) b

but if you want it to be concatenated 但是如果您希望将其串联

select a.data + '/' + b.total -- will result literal string value of 10/60
from   datatable a, 
       (select SUM(data) total from datatable) b

This works on SQL Server 2005 or later: 这适用于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

Using the window function sum over the entire table ( over () ): 在整个表格中使用窗口函数sumover () ):

select  1.0 * data / sum(data) over ()
from    tableName

Example at SQL Fiddle. SQL Fiddle中的示例。

I'm not sure where the 60 value comes from, but I would do something like this: 我不确定60的值来自哪里,但是我会做这样的事情:

select data + '/' + sum(data) from datatable group by data

For concatenation, please check this link: http://msdn.microsoft.com/en-us/library/aa276862(v=sql.80).aspx 对于串联,请检查此链接: http : //msdn.microsoft.com/zh-cn/library/aa276862(v=sql.80).aspx

Hope this helps. 希望这可以帮助。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM