举例说明如何根据开放和结束周进行分组。
SELECT Organization, Product, Month,
week,
sum(open) AS open,
sum(close) AS close
FROM (
SELECT Organization, Product, Month,
open_week AS week,
count(*) AS open,
0 AS close
FROM tab
GROUP BY Organization, Product, Month, open_week
UNION ALL
SELECT Organization, Product, Month,
close_week AS week,
0 AS open,
count(*) AS close
FROM tab
GROUP BY Organization, Product, Month, close_week
) alias
GROUP BY Organization, Product, Month, week
ORDER BY Organization, Product, Month, week
演示包括 - >http://www.sqlfiddle.com/#!2/01ac3/1
为了简单起见,例子是使用month
,close_week
和open_week
的功能,而不是像这样:
WEEK(datefield,5) - WEEK(DATE_SUB(datefield, INTERVAL DAYOFMONTH(datefield)-1 DAY),5)
我真的不明白你想要什么。如果您希望每周有开盘和结算总额,您可以使用: 'SELECT SUM(open)AS totalOpen,SUM(close)AS totalClose FROM table GROUP BY week'。并考虑将“星期”重命名为其他内容,因为它也是MySQL的一项功能。 – davey
你应该分享你的查询。 – AgRizzo
我使用mysql week函数计算周。但问题是它要求列字段。这对于打开和关闭列是不同的,所以我应该在哪个字段中使用它。我使用WEEK(datefield,5) - WEEK(DATE_SUB(datefield,INTERVAL DAYOFMONTH(datefield)-1 DAY),5)作为计算星期的星期。根据他们的价值观,开放和关闭的周数都不同 – user2870894