sql - 得到两个计数,然后将它们相除

标签 sql sql-server-2008

我试图获得两个计数,然后将这两个计数相除以获得我正在计数的项目的比率。我看到这个帖子 here并尝试过。我的结果出现错误,没有错误消息,只是数字不正确。我正在使用 SQL-Server 2008

这是我的代码:

-- INTERNAL PEPPER REPORT
--#####################################################################

-- VARIABLE DECLARATION AND INITIALIZATION
DECLARE @SD DATETIME
DECLARE @ED DATETIME

SET @SD = '2013-01-01'
SET @ED = '2013-03-31'

-- TABLE DECLARATION ##################################################
DECLARE @TABLE1 TABLE(NUMERATOR INT, DENOMINATOR INT, RATIO INT)
--#####################################################################

-- WHAT GETS INSERTED INTO TABLE 1
INSERT INTO @TABLE1
SELECT
A.NUM, A.DENOM, A.NUM/A.DENOM 

FROM
(
-- COLUMN SELECTION. TWO NUMBERS WILL REPRESENT A NUM AND A DENOM
SELECT 
    (SELECT COUNT(DRG_NO)
        FROM smsdss.BMH_PLM_PtAcct_V
        WHERE drg_no IN (061,062,063,064,065,066)
        AND Adm_Date BETWEEN @SD AND @ED
        AND PLM_PT_ACCT_TYPE = 'I')
        AS NUM,
    (SELECT COUNT(DRG_NO)
        FROM smsdss.BMH_PLM_PtAcct_V
        WHERE drg_no IN (061,062,063,064,065,066,067,068,069)
        AND Adm_Date BETWEEN @SD AND @ED
        AND Plm_Pt_Acct_Type = 'I')
        AS DENOM
)A

SELECT NUMERATOR, DENOMINATOR, RATIO
FROM @TABLE1

计数得到正确生成和显示,但是对于比率,我得到 0 并且不确定为什么我得到这个。

谢谢你,

最佳答案

使用 SELECT A.NUM, A.DENOM, cast(A.NUM as float)/cast(A.DENOM as float)
SQL Server认为A.NUM/A.DENOM是int,因为A.NUM和A.DENUM都是int

关于sql - 得到两个计数,然后将它们相除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17051069/

相关文章:

python - Pandas diff() 函数的 SQL 模拟(第一个离散差值)[LAG 函数]

SQL Server 审核注销会产生大量读取

sql - 如何在一个 ssms 实例中打开多个 .sql 文件

sql-server-2008 - 如何创建递归查询以返回扁平的串联字符串列

sql-server - 在 View 中使用动态透视 SQL

sql - 选择所有具有匹配标签的项目

php - 准备好的语句 SQL

c# - 将架构从 SQL Server 数据库传输到 SQL Server CE 数据库的简单方法?

sql - 从四个表中任意选择数据

sql - 如何在 SQL Server 中创建夏令时开始和结束函数