【问题标题】:SQL Server query : how can I SUM one SELECT to another?SQL Server 查询:如何将一个 SELECT 与另一个 SELECT 相加?
【发布时间】:2013-02-27 19:50:18
【问题描述】:

我的 SQL Server 查询有问题,希望您能帮助我

主选必须输出日期和重量总和

如何将一个选择与另一个选择相加?数据取自一张表Tbreport,条件为-将具体日期和前一个日期的权重相加(具体日期减去1天)

例如:

CONCRETE DATE  WEIGHT 
  Jan 1         100                 
  Jan 2         150         
  Jan 3         210         

PREVIOUS DATE   WEIGHT 
  Jan 1          100 
  Jan 2          250 (Jan 1 + Jan 2)
  Jan 3          460 (Jan 1 + Jan 2 + Jan 3) 

在真实表格中,我有几秒钟的格式。例如:1358892000 秒是 2013 年 1 月 23 日 0:00:00,1358978400 是 2013 年 1 月 23 日 23:59:00。而且每次都是自己的重量

查询:

SELECT CONVERT(varchar, DATEADD(s, TBreport.date, 25568), 102)  AS DATE,
    SUM(TBreport.weight) 
+ 
(
SELECT SUM(TBreport.weight) AS WEIGHT 
FROM         TBreport INNER JOIN TBway ON TBreport.id_way = TBway.id 
WHERE     (SUBSTRING(TBway.name, 5, 8) LIKE 'to warehouse')  
AND ... ???
GROUP BY CONVERT(varchar, DATEADD(s, TBreport.date, 25568), 102)  
)  
FROM         TBreport INNER JOIN TBway ON TBreport.id_way = TBway.id 
WHERE     (SUBSTRING(TBway.name, 5, 8) LIKE 'to warehouse')  
GROUP BY CONVERT(varchar, DATEADD(s, TBreport.date, 25568), 102) 

【问题讨论】:

    标签: sql sql-server-2008


    【解决方案1】:

    我假设dateTBreport 中是唯一的

    SELECT this.date, SUM(upToThis.weight)
    FROM TBreport this
    INNER JOIN TBreport upToThis ON upToThis.date <= this.date
    GROUP BY this.date
    

    【讨论】:

    • 你为什么称这为“丑陋”的方式?你还有其他不那么难看的方法吗?
    • 数据以秒为单位存储,每 5-10 分钟测量一次,然后按日期汇总重量。您的代码已经执行了 15 分钟(我认为它不起作用)。当我尝试对查询求和时,我收到此错误消息 > 当 EXISTS 未引入 > 子查询时,只能在选择列表中指定一个表达式。
    • @Yohsoog 这很“丑陋”,因为它可能很慢。使用光标很可能会快得多
    • @Jkterina 那么你能发布你拥有的实际数据吗?此查询将适用于您发布的表。
    • 在真实表格中,我有几秒钟的格式。例如:1358892000 秒是 2013 年 1 月 23 日 0:00:00,1358978400 是 2013 年 1 月 23 日 23:59:00。而且每次都是自己的重量
    猜你喜欢
    • 2015-12-28
    • 1970-01-01
    • 2021-03-02
    • 1970-01-01
    • 2014-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-23
    相关资源
    最近更新 更多