首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用空单元格替换空单元格?

用空单元格替换空单元格?
EN

Stack Overflow用户
提问于 2016-11-17 12:23:20
回答 1查看 75关注 0票数 0

在这里输入图像描述请看附件中的图片。

我的查询是查看我们有多大百分比的“漏洞”,但是当没有漏洞时,我的查询没有返回任何单元格,甚至没有返回NULLS (请参阅附图)。

我有没有办法让它显示为空或"100%“,而不是空白单元格??

这是我的查询

代码语言:javascript
复制
select *

from 

(select '100' -  convert(decimal(5,2),(100 *         convert(float,CountBreach)/nullif(convert(float,CountNot),0)))  AS '2 week   target'
from

 (select CancerBreach, COUNT(*) [CountBreach] from
(

SELECT 

d.HospitalNumber ,


    CASE WHEN SUM(DATEDIFF(DD,ReceiptOfReferralDate, FirstAppointmentDate)-      FirstAppointmentWaitingTimeAdjusted) > 14
THEN 'Breach' ELSE 'Not Breach'
END AS CancerBreach


  FROM [WH].[SCR].[Referral] R
  LEFT OUTER JOIN WHREPORTING.LK.SpecialtyDivision S
  ON CONVERT(Varchar(10),(R.SpecialtyCode)) = S.SpecialtyCode
  LEFT JOIN WH.SCR.Demographic as d
  on d.UniqueRecordId = R.DemographicUniqueRecordId   

  WHERE 
  R.FirstAppointmentOrganisationCode IN ('RM202', 'RM201')
  AND PriorityTypeCode = '03'
  AND FirstAppointmentDate BETWEEN '01 oct 2016' AND '14 oct 2016'
  AND R.CancerTypeCode <> '16'
   AND R.FirstAppointmentDate is not NULL

  AND NewTumourSite IS NULL
  and s.SpecialtyCode = '103'
  GROUP BY


d.HospitalNumber)f

where CancerBreach = 'breach'

 group by CancerBreach) e,


 (select COUNT(*) [CountNot] from

 (

SELECT 

d.HospitalNumber ,


CASE WHEN SUM(DATEDIFF(DD,ReceiptOfReferralDate, FirstAppointmentDate)-   FirstAppointmentWaitingTimeAdjusted) > 14
THEN 'Breach' ELSE 'Not Breach'
END AS CancerBreach


  FROM [WH].[SCR].[Referral] R
  LEFT OUTER JOIN WHREPORTING.LK.SpecialtyDivision S
  ON CONVERT(Varchar(10),(R.SpecialtyCode)) = S.SpecialtyCode
   LEFT JOIN WH.SCR.Demographic as d
  on d.UniqueRecordId = R.DemographicUniqueRecordId   

   WHERE R.FirstAppointmentOrganisationCode IN ('RM202', 'RM201')
   AND PriorityTypeCode = '03'
   AND FirstAppointmentDate BETWEEN '01 oct 2016' AND '14 oct 2016'
   AND R.CancerTypeCode <> '16'
   AND R.FirstAppointmentDate is not NULL

  AND NewTumourSite IS NULL
  and s.SpecialtyCode = '103'
  GROUP BY


d.HospitalNumber)f

where CancerBreach = 'Not breach'

 group by CancerBreach) d)e
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-17 12:48:39

您可以使用具有默认值的联合和返回具有前1条记录的排序,例如:

代码语言:javascript
复制
SELECT TOP 1 *
FROM
(
    SELECT '100'-CONVERT( DECIMAL(5, 2), (100 * CONVERT(FLOAT, CountBreach) / NULLIF(CONVERT(FLOAT, CountNot), 0))) AS '2 week   target'
    FROM
    (
        SELECT CancerBreach,
               COUNT(*) [CountBreach]
        FROM
        (
            SELECT d.HospitalNumber,
                   CASE
                       WHEN SUM(DATEDIFF(DD, ReceiptOfReferralDate, FirstAppointmentDate) - FirstAppointmentWaitingTimeAdjusted) > 14
                       THEN 'Breach'
                       ELSE 'Not Breach'
                   END AS CancerBreach
            FROM [WH].[SCR].[Referral] R
                 LEFT OUTER JOIN WHREPORTING.LK.SpecialtyDivision S ON CONVERT( VARCHAR(10), (R.SpecialtyCode)) = S.SpecialtyCode
                 LEFT JOIN WH.SCR.Demographic AS d ON d.UniqueRecordId = R.DemographicUniqueRecordId
            WHERE R.FirstAppointmentOrganisationCode IN('RM202', 'RM201')
                 AND PriorityTypeCode = '03'
                 AND FirstAppointmentDate BETWEEN '01 oct 2016' AND '14 oct 2016'
                 AND R.CancerTypeCode <> '16'
                 AND R.FirstAppointmentDate IS NOT NULL
                 AND NewTumourSite IS NULL
                 AND s.SpecialtyCode = '103'
            GROUP BY d.HospitalNumber
        ) f
        WHERE CancerBreach = 'breach'
        GROUP BY CancerBreach
    ) e,
    (
        SELECT COUNT(*) [CountNot]
        FROM
        (
            SELECT d.HospitalNumber,
                   CASE
                       WHEN SUM(DATEDIFF(DD, ReceiptOfReferralDate, FirstAppointmentDate) - FirstAppointmentWaitingTimeAdjusted) > 14
                       THEN 'Breach'
                       ELSE 'Not Breach'
                   END AS CancerBreach
            FROM [WH].[SCR].[Referral] R
                 LEFT OUTER JOIN WHREPORTING.LK.SpecialtyDivision S ON CONVERT( VARCHAR(10), (R.SpecialtyCode)) = S.SpecialtyCode
                 LEFT JOIN WH.SCR.Demographic AS d ON d.UniqueRecordId = R.DemographicUniqueRecordId
            WHERE R.FirstAppointmentOrganisationCode IN('RM202', 'RM201')
                 AND PriorityTypeCode = '03'
                 AND FirstAppointmentDate BETWEEN '01 oct 2016' AND '14 oct 2016'
                 AND R.CancerTypeCode <> '16'
                 AND R.FirstAppointmentDate IS NOT NULL
                 AND NewTumourSite IS NULL
                 AND s.SpecialtyCode = '103'
            GROUP BY d.HospitalNumber
        ) f
        WHERE CancerBreach = 'Not breach'
        GROUP BY CancerBreach
    ) d
    UNION SELECT 100 AS '2 week   target'
) e
ORDER BY [2 week   target] ASC;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40654805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档