【问题标题】:build sum of multiple subquery results构建多个子查询结果的总和
【发布时间】:2019-01-23 19:45:39
【问题描述】:

我正在尝试构建来自多个子查询的结果的总和。 我用两个变量定义了许多时期:

declare 
@left1 date = '2014-06-25',
@return1 date ='2014-08-21',

 @left2 date = '2014-10-29',
 @return2 date = '2015-03-15',

@left3 date = '2015-04-21',
@return3 date = '2015-09-19'

然后我正在计算这两个日期之间的天数,但最终我想将它们相加并得到一个总数:

select  datediff(day, @left1, @return1 )

select  datediff(day, @left2, @return2 )

select  datediff(day, @left3, @return3 )

我想到了 CTE,但没有成功。这样做的正确方法是什么?

【问题讨论】:

    标签: sql sql-server date sum subquery


    【解决方案1】:

    很确定你只需要一些基本的补充。

    select datediff(day, @left1, @return1 )
         + datediff(day, @left2, @return2 )
         + datediff(day, @left3, @return3 )
    

    【讨论】:

      【解决方案2】:
      select  
         datediff(day, @left1, @return1 ) + 
         datediff(day, @left2, @return2 ) + 
         datediff(day, @left3, @return3 )
      

      【讨论】:

        【解决方案3】:

        这个查询可以帮助你:

        Select 
            sum(NbDay) as totaldiffday
        From (
                select  datediff(day, @left1, @return1 ) As NbDay
                Union
                select  datediff(day, @left2, @return2 ) As NbDay 
                Union 
                select  datediff(day, @left3, @return3 ) As NbDay
        ) as SubQuery
        

        【讨论】:

          【解决方案4】:
          SELECT SUM(DATEDIFF(DAY,[LEFT],[Return])) AS TOTALDAYS
          FROM
          (
            select @left1 AS [Left],@return1 AS [Return]
            UNION ALL
            select @left2 AS [Left],@return2 AS [Return]
            UNION ALL
            select @left3 AS [Left],@return3 AS [Return]
          ) X
          

          【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-04-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多