转换为显示2个或更多组合列总和的百分比

时间:2017-06-05 21:59:32

标签: sql sql-server

我查看了类似的问题,但找不到任何能回答我问题的内容。

我有一个列,它是其他列的计算,其中我想要除以一个数字并将结果显示为百分比。我已经尝试了以下查询,并能够以十进制显示。基本上找出一个同事正在做的UPH的百分比......这样我就可以判断他们是在他们的部门还是懈怠。我使用150作为我的基本费率

ID      DC  OC  Units   UPH Percentage
11259   FB  PU  553     114 0.760000
2375935 FB  PU  263     70  0.466666   

这是我的结果......

ID      DC  OC  Units   UPH Percentage
11259   FB  PU  553     114 76%
2375935 FB  PU  263     70  47%

我希望看到列'百分比',如下所示

name | provider  | visit_dt    | rd | rn  
 A   | 100000    | 06/05/'17   | 1  |  1
 A   | 100001    | 06/04/'17   | 1  |  0
 A   | 100001    | 06/03/'17   | 1  |  0
 B   | 100000    | 06/05/'17   | 1  |  0
 B   | 100001    | 06/05/'17   | 1  |  1
 C   | 100000    | 06/05/'17   | 1  |  0
 C   | 100001    | 06/04/'17   | 1  |  0
 C   | 100001    | 06/03/'17   | 1  |  1
 D   | 100001    | 06/05/'17   | 1  |  0
 D   | 100001    | 06/04/'17   | 1  |  0

任何帮助都会受到赞赏,如果这对你很重要,我会提前道歉,我对SQL相对较新

2 个答案:

答案 0 :(得分:1)

尝试这样做(SQL 2012及更高版本):

  

百分比= CONCAT(强制转换(isnull)(总和(单位)/   nullif(sum(datediff(minute,StartTime,FinishTime))* 1.0,0),0.0)* 60 as   十进制(10,0)),'%')

参考:https://docs.microsoft.com/en-us/sql/t-sql/functions/concat-transact-sql

试试这个(SQL 2008):

  

(convert(varchar,cast((isnull(sum(Units)/ nullif(sum(datediff(minute,StartTime,FinishTime))* 1.0,0),0.0)* 60)/ 150 * 100 as decimal( 10,0)))+'%')百分比

参考:https://docs.microsoft.com/en-us/sql/t-sql/language-elements/string-concatenation-transact-sql

答案 1 :(得分:0)

您可以使用格式(十进制,' p'),如下所示:

<Grid>
    <WebBrowser x:Name="myBrowser"
            webHelper:WebBrowserHelper.BrowserSource="{Binding XBAP_URI}"
            Height="Auto"/>

    <Grid Name="MyOverlayGrid" Background="LightGray" Opacity="0.5" 
          Visibility="{Binding Path=IsEnabled, Converter={StaticResource BoolToVisible2}, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type igDock:ContentPane}}}">
        <TextBlock Text="User does not have permissions for this application" FontSize="24"/>
    </Grid>
</Grid>