当前位置: 首页 > 知识库问答 >
问题:

SQL查询-如果没有可用的值,则选择0

宰父君昊
2023-03-14

我在SQL Server2012中创建了以下存储过程...

ALTER PROCEDURE [dbo].[GET_DASHBOARD_LINECHART_DATA]    
AS
BEGIN
    SET NOCOUNT ON;

    -- PULL THE DATA
    SELECT COUNT(*) AS TICKET_COUNT, 
           CAST(DATE_ENTERED AS DATE) AS DATE_ENTERED,
           DATENAME(weekday,DATE_ENTERED) AS DAY_ENTERED
    FROM TICKETS
    WHERE DATE_ENTERED >= DATEADD(day,-7,GETDATE())
    GROUP BY DATENAME(weekday,DATE_ENTERED), CAST(DATE_ENTERED AS DATE)
    ORDER BY DATE_ENTERED ASC

    SET NOCOUNT OFF;
END

它将显示类似于下面的输出...

我想让它做的是显示前几周的票数(今天和前6天),即使其中一些天没有门票进入。对他们来说只会显示0。因此,我的输出将看起来包含周四、周五、周六、周日、周一、周二、周三。

共有1个答案

司寇正志
2023-03-14

您需要为前几天构建一个日期表,并对其执行右联接:

Alter Procedure [dbo].[GET_DASHBOARD_LINECHART_DATA]
As Begin
    Set NoCount On

    Declare @FromDate   Date = DateAdd(Day, -7, GetDate()),
            @ToDate     Date = GetDate()

    ;With Date (Date) As
    (
        Select  @FromDate Union All
        Select  DateAdd(Day, 1, Date)
        From    Date
        Where   Date < @ToDate
    )
    Select      Count(T.Date_Entered)       As  TICKET_COUNT, 
                D.Date                      As  DATE_ENTERED,
                DateName(WeekDay, D.Date)   As  DAY_ENTERED
    From        Tickets T
    Right Join  Date    D   On  D.Date = Convert(Date, T.DATE_ENTERED)
    Group By    DateName(WeekDay, D.Date), D.Date
    Order By    D.Date Asc
End
 类似资料:
  • 问题内容: 使用jQuery,如何检查选择菜单中是否有选项,如果没有,则按选择分配选项之一。 (选择是通过我刚刚继承的应用程序中的PHP函数迷宫生成的,因此当我设法解决这些问题时,这是一个快速解决方案:) 问题答案: 虽然我不确定您到底想完成什么,但是这段代码对我有用。

  • 嗨,最近我一直在研究REST API。我在想,如果没有参数,我怎么才能得到所有的数据。我只能通过categoryId获得数据,如下所示。http://..../categorys?categoryID=2数据被选择并显示如下。

  • 问题内容: 我有一个如下查询: 结果如下:中心名称和交换数量 我喜欢从此结果(第二行)中选择最大值,除了排序和选择第一行之外,还有谁能帮助我进行MAX查询。 问题答案: 那应该工作

  • 我有一个表,其中有多个条目对应一个FK。我想找出没有某些条目的FK值,例如 我的表有以下条目。 现在,我想从这个表中过滤所有没有ab3或ab4的FK。当然,我期望不同的值,即在这种情况下,结果将是FK=100和200。 我使用的查询是 当然,此查询不会获取所需的结果。

  • 问题内容: 我遇到了由于某种原因无法解决的问题。我正在尝试编写一个连接两个表的查询,其中在一个表中可能找不到匹配项。如: 如果中没有匹配项,则不返回任何内容。但是,如果没有匹配项,我仍然需要为该列返回NULL,并且仍从返回值。 我已经改变了所有我能想到的,但无济于事。 可以包含多个其他值,因此无法进行某种交易。 因此,如果没有匹配,我仍然需要它返回: 有什么建议? 问题答案: 将for的条件移出子

  • 问题内容: 如果返回0行,那么我需要。是否可以在带有条件语句的单个MySQL查询中执行此操作? 编辑: 所有答案均有效,但前提是两个查询均从同一表(或具有相同列数的表)中选择。如果第二个查询应用于具有联接的其他表上怎么办? 让我写下我的查询以使问题更清楚: 第一: 如果第一个结果为空,则: 第二名: 如果返回第一个查询,我将使用第一个查询的行,否则将使用第二个查询。 问题答案: 从我刚刚进行的快速