sql - 在子查询中分组?

标签 sql sql-server group-by

我需要一些有关子查询中分组依据的帮助。你能帮我解决这个分组问题吗:

select
  DATEPART(wk, oh. ExportDate) as wk,
  DATEPART(dw,oh.ExportDate) as day,
  ro.Name,
  Pallets = sum(oh.Pallets),
  Box = (select count(Number) from OrderItem where ID_OrderHead = oh.Id) 
from
  OrderHeadPDAEvent ohpe
  left outer join OrderHead oh on oh.Id = ohpe.ID_OrderHeader
  left outer join Route ro on oh.ID_Route = ro.ID
where
  ID_Route = '00000000-0000-0000-0000-000000000000'
    and
  oh.ExportDate > dbo.GetStartOfDay('2012-08-01 14:35:00.000' ) 
    and 
  oh.ExportDate < dbo.GetEndOfDay('2013-08-08 14:35:00.000')
group by 
  oh.ExportDate, ro.Name, oh.ID
order by 
  DATEPART(wk, oh. ExportDate)

数据如下所示:

26  3   Standard - Uten rute    5   49
26  3   Standard - Uten rute    2   45
26  3   Standard - Uten rute    2   38
26  3   Standard - Uten rute    1   26
26  3   Standard - Uten rute    1   64
26  3   Standard - Uten rute    2   45
26  3   Standard - Uten rute    3   64

我想对所有行求和,使它们仅占 1 行。

最佳答案

试试这个 -

SELECT
      DATEPART(wk, oh.ExportDate) AS wk
    , DATEPART(dw, oh.ExportDate) AS day
    , ro.name
    , Pallets = SUM(oh.Pallets)
    , Box = SUM(n)
FROM dbo.OrderHeadPDAEvent ohpe
LEFT JOIN dbo.OrderHead oh ON oh.ID = ohpe.ID_OrderHeader
LEFT JOIN dbo.[Route] ro ON oh.ID_Route = ro.ID
LEFT JOIN (
     SELECT n = COUNT(number), ID_OrderHead
     FROM dbo.OrderItem
     GROUP BY ID_OrderHead 
) t ON t.ID_OrderHead = oh.ID
WHERE ID_Route = '00000000-0000-0000-0000-000000000000'
     AND oh.ExportDate BETWEEN 
                         dbo.GetStartOfDay('2012-08-01 14:35:00.000') 
                         AND 
                         dbo.GetEndOfDay('2013-08-08 14:35:00.000')
GROUP BY
      oh.ExportDate
    , ro.name
ORDER BY wk

关于sql - 在子查询中分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17340808/

相关文章:

c# - Linq: GroupBy 其 child.value 属性值

mysql - SELECT,如何将某些行合并为一个,首先显示具有特定列值的行,并排除行

php - 在每组的 2 行之间选择

mysql - 如何根据单个id获取所有行

sql - SQL Server 链接服务器的资源限制

sql - Azure SQL 数据库中的索引

python - 使用 groupby 将分组数据转换为数据帧

sql - 使用不同的 WHERE 子句获取聚合的子查询

php - mysqli结果排序后获取一行的位置

python - 使用 INSERT ... OUTPUT 和 pyodbc 时如何获取 IDENTITY 值