MSSQL 另一个表引用的值的总和

马修·海特

我正在尝试创建一份关于每天花费的总金额的报告。在数据库中有这两个表。它们使用创建时制作的“UID”进行匹配。

我创建了这个查询,但它导致重复的日期。

Select LEFT(f.timestamp, 10) timestamp, sum(s.Total) Total
FROM dbo.purchasing AS f
Join (SELECT uid,SUM(CONVERT(DECIMAL(18,2), (CONVERT(DECIMAL(18,4), qty) * price))) Total
        FROM dbo.purchasingitems
        GROUP BY uid)
AS s ON f.uid = s.uid
GROUP BY TIMESTAMP

购买:

+--+---------+------------+--------+---+
|ID|   UID   | timestamp  | contact|...|
+--+---------+------------+--------+---+
| 1|abr92nas9| 01/01/2018 | ROB    |...|
| 2|nsa93m187| 02/02/2018 | ROB    |...|
+--+---------+------------+--------+---+

采购项目:

+--+---------+-----+--------+---+
|ID|   UID   | QTY |  Price |...|
+--+---------+-----+--------+---+
| 1|abr92nas9|  20 | 0.2435 |...|
| 2|abr92nas9|  5  | 0.5    |...|
| 3|nsa93m187|  1  | 100    |...|
| 4|nsa93m187|  4  | 15.5   |...|
+--+---------+-----+--------+---+
戈登·利诺夫

您需要按表达式分组:

SELECT LEFT(f.timestamp, 10) as timestamp, sum(s.Total) as Total
FROM dbo.purchasing f JOIN
     (SELECT uid, SUM(CONVERT(DECIMAL(18,2), (CONVERT(DECIMAL(18,4), qty) * price))) as Total
      FROM dbo.purchasingitems
      GROUP BY uid
     ) s
     ON f.uid = s.uid
GROUP BY LEFT(f.timestamp, 10);

笔记:

  • 您不应将日期/时间值存储为字符串(除非您有充分的理由)。如果timestamp是日期,则应使用cast(timestamp as date).
  • 您不应该在日期/时间上使用字符串函数。
  • timestampSQL Server 中关键字(虽然不是保留的),因此它不是列名的好选择。
  • 你的问题是,你认为GROUP BY timestamp是指在表达SELECTSQL Server 不支持列别名,因此它只能引用该名称的列。
  • 我看不出有理由将乘法转换为十进制。你可能有一个很好的理由。
  • 您可能还想order by确保结果集的顺序合理。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

MSSQL将数据从一个表插入到具有固定值的另一个表

来自分类Dev

从另一个表插入INTO MSSQL表没有用?

来自分类Dev

xml的mssql包含另一个xml数据

来自分类Dev

根据来自另一个表的信息更新同一SQL表中的行-MSSQL

来自分类Dev

如何使用MSSQL将行“乘”到另一个表中的每一行

来自分类Dev

从从 C# MSSQL 中的另一个表中检索的 datagridview 数据插入到数据库

来自分类Dev

MSSQL:为什么此索引比另一个索引快10倍?

来自分类Dev

跨表引用的MSSQL语句

来自分类Dev

如何从另一个表获取引用值?

来自分类Dev

如何使用VB.NET的SMO类将单个表传输到MSSQL服务器中的另一个数据库?

来自分类Dev

从Web编辑MSSQL表

来自分类Dev

从Web编辑MSSQL表

来自分类Dev

根据MSSQL中的列值从任何一个表中检索数据

来自分类Dev

根据另一个工作表的值引用另一个工作表的单元格

来自分类Dev

使用来自另一个表的值的总和更新表

来自分类Dev

根据其值引用另一个工作表中的另一个单元格

来自分类Dev

根据其值引用另一个工作表中的另一个单元格

来自分类Dev

来自另一个表的聚集值的树形结构递归总和

来自分类Dev

触发以确保总和小于另一个表中的值

来自分类Dev

从另一个表中选择具有总和值的查询

来自分类Dev

基于在另一个表中查找代码和值的 Excel 总和

来自分类Dev

在MSSQL中更新XML值

来自分类Dev

MySQL按另一个表的总和排序

来自分类Dev

从另一个表更新总和

来自分类Dev

根据另一个表中的引用值从一个表中选择值

来自分类Dev

表引用一个表,该表又引用另一个表

来自分类Dev

MSSQL 两个内连接到同一个表

来自分类Dev

mssql与同一表的联接条件

来自分类Dev

从另一个下拉值引用的下拉值

Related 相关文章

  1. 1

    MSSQL将数据从一个表插入到具有固定值的另一个表

  2. 2

    从另一个表插入INTO MSSQL表没有用?

  3. 3

    xml的mssql包含另一个xml数据

  4. 4

    根据来自另一个表的信息更新同一SQL表中的行-MSSQL

  5. 5

    如何使用MSSQL将行“乘”到另一个表中的每一行

  6. 6

    从从 C# MSSQL 中的另一个表中检索的 datagridview 数据插入到数据库

  7. 7

    MSSQL:为什么此索引比另一个索引快10倍?

  8. 8

    跨表引用的MSSQL语句

  9. 9

    如何从另一个表获取引用值?

  10. 10

    如何使用VB.NET的SMO类将单个表传输到MSSQL服务器中的另一个数据库?

  11. 11

    从Web编辑MSSQL表

  12. 12

    从Web编辑MSSQL表

  13. 13

    根据MSSQL中的列值从任何一个表中检索数据

  14. 14

    根据另一个工作表的值引用另一个工作表的单元格

  15. 15

    使用来自另一个表的值的总和更新表

  16. 16

    根据其值引用另一个工作表中的另一个单元格

  17. 17

    根据其值引用另一个工作表中的另一个单元格

  18. 18

    来自另一个表的聚集值的树形结构递归总和

  19. 19

    触发以确保总和小于另一个表中的值

  20. 20

    从另一个表中选择具有总和值的查询

  21. 21

    基于在另一个表中查找代码和值的 Excel 总和

  22. 22

    在MSSQL中更新XML值

  23. 23

    MySQL按另一个表的总和排序

  24. 24

    从另一个表更新总和

  25. 25

    根据另一个表中的引用值从一个表中选择值

  26. 26

    表引用一个表,该表又引用另一个表

  27. 27

    MSSQL 两个内连接到同一个表

  28. 28

    mssql与同一表的联接条件

  29. 29

    从另一个下拉值引用的下拉值

热门标签

归档