【问题标题】:how to get GROUP data from multiple tables msSQL如何从多个表msSQL中获取GROUP数据
【发布时间】:2014-11-10 16:52:37
【问题描述】:
tblDailyProduction
+---------+------------+------------+------------+----------+----------+
| date |      items | quantity| weight| wheatConsumed| |
+---------+------------+------------+------------+----------+----------+
tblCashBillbook
+---------+------------+------------+------------+----------+----------+
+---------+------------+------------+------------+----------+----------+
| date |      bagWeight | totalBags |
+---------+------------+------------+------------+----------+----------+



SELECT CAST(tblDailyProduction.date AS DATE) as DateField,
SUM(tblDailyProduction.quantity * tblDailyProduction.weight) 
AS   totalProduct,SUM(tblCashBillbook.totalBags * tblCashBillbook.bagWeight) 
AS   totalIssued
FROM tblDailyProduction
left join tblCashBillbook on tblDailyProduction.date=tblCashBillbook.date
GROUP BY CAST(tblDailyProduction.date AS DATE)

我想使用JOIN 子句根据来自两个不同表的日期对数据进行分组。从tblDailyProduction 表中获取数据,但从tblCashBillBook 表中获取NULL 数据。 尝试了INNERLEFTRIGHT 加入,但GROUP BY 子句存在问题。

【问题讨论】:

  • SQL Server 还是 MySQL?,选择您实际使用的那个。 “但是 GROUP BY 有问题”,你能解释一下是什么问题吗?
  • 两张表的数据类型是什么? (不是显示的内容,因为可能不包括时间)是否包含时间组件;在这种情况下,您还需要在加入时添加日期?我怀疑是的,因为您在 select 和 group 中使用 cast by 考虑 LEFT JOIN tblCashBillbook on cast(tblDailyProduction.date as DATE)=cast(tblCashBillbook.date as DATE) 然后如果您只想要两个表中日期匹配的记录,则内部联接。

标签: mysql sql sql-server database mysql-error-1064


【解决方案1】:

您不需要按两个日期进行分组,因为日期在您的 join 语句中放在一起。

尝试将其更改为:

GROUP BY dateField

可能造成一些问题的是您正在执行左连接,因此并非每一行都有tblCashBillbook.date 值。如果他们这样做,您不应该使用左连接,而是使用内连接。因此,您尝试按某些行中可能为 null 的内容进行分组,所以我再次建议您按 tblDailyProduction 日期列进行分组。

【讨论】:

    猜你喜欢
    • 2013-02-11
    • 1970-01-01
    • 2012-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多