【问题标题】:how to get sum() from alise column in SQL如何从 SQL 中的 alise 列获取 sum()
【发布时间】:2011-06-10 06:59:50
【问题描述】:

我想要 TotalVisitedTime 时间的总和,但它是别名列,所以我怎样才能得到它?

Select CONVERT(varchar(6), DATEDIFF(second, [Start], [End])/3600)
   + ':'
   + RIGHT('0' + CONVERT(varchar(2), (DATEDIFF(second, [Start], [End]) % 3600) / 60), 2)
   + ':'
   + RIGHT('0' + CONVERT(varchar(2), DATEDIFF(second, [Start], [End]) % 60), 2) AS TotalVisitedTime
FROM [Table Name]

注意:[Start] 和 [End] 是列名。

【问题讨论】:

  • 我想求 TotalVisitedTime 时间的总和,但它是 alise 列,所以我怎么能得到它??????请帮助

标签: sql sql-server-2005 tsql sum


【解决方案1】:
SELECT SUM(TotalVisitedTime)
FROM (    
    -- AS PER @Alex Aza,  @Andriy M     
        SELECT 1234 AS TotalVisitedTime
     ) AS OuterTable

【讨论】:

  • 我想知道将 '01:00:00' 和 '02:00:00' 之类的两个 varchar 值相加会产生什么结果 :)。
  • 大声笑,我期待提出问题的人会填写他的代码来完成做数学的驴工作:D。开个玩笑,我想指导发布者了解将 Query 包装到 Set 并使用计算列的概念!
  • @Akhil:方法本身没有问题。但是您应该同意它不能以您提供的方式应用在这里,因为该列是非数字的。我的意思是,如果适用,您的解决方案将是有效的,但事实并非如此。
  • @Andriy:好的。这个怎么样?选择'ABC',(选择'CDE')作为tt
  • 你错了,我不是在鼓吹任何人。如果没有人评论或否决您的答案,我仍然会将我的评论保留在那里表达的观点,即 your solution 基本上没问题,但它不适用于您描述的方式。这不是关于语法,而是关于应用于不那么具体的问题的方法的有效性。 (我的意思是,您的解决方案仍然不适用于 任何 非数字列/表达式,而不仅仅是 OP 查询中的那个。)
【解决方案2】:

我认为总结秒数然后进行你想要做的转换是有意义的。

SELECT  CONVERT(varchar(6), diff/3600)
    + ':'
    + RIGHT('0' + CONVERT(varchar(2), (diff % 3600) / 60), 2)
    + ':'
    + RIGHT('0' + CONVERT(varchar(2), diff % 60), 2) AS TotalVisitedTime
FROM 
(
    select sum(DATEDIFF(second, [Start], [End]) diff
    from [Table Name]
) tt

【讨论】:

  • 如何回答发帖者“计算别名列的总和”的问题?我确实同意它是海报最终结果的另一种方式!
  • 另外,您需要在 TotalVisitedTime 和 Query 之后添加一个“,”。当你运行查询时它会抛出一个错误!
  • @Akhil - 已修复。 FROM 不见了,不是逗号。
  • @Akhil - 它肯定不会修复语法。
  • 为什么不修复它?为了简化,就像 SELECT 1 AS totalVisitedTime, (SELECT 1) tt.
猜你喜欢
  • 1970-01-01
  • 2023-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-12
相关资源
最近更新 更多