我想知道一个解决方案,它可以帮助我生成一个MySQL查询,以便从单个数据库表中获取数据。
Table name: Rates
Columns: id, date, weekday, costA, costB, costC, sellA, sellB, sellC
SAMPLE TABLE DATA
=================
id | date | weekday | costA | costB | costC | sellA | sellB | sellC
----------------------------------------------------------------------
01 2010/6/1 TUE 120 135 140 150 165 180
02 2010/6/2 WED 120 135 140 150 165 180
03 2010/6/3 THU 120 135 140 150 165 180
04 2010/6/4 FRI 120 135 140 150 165 180
05 2010/6/5 SAT 120 135 140 150 165 180
06 2010/6/6 SUN 120 135 140 150 165 180
07 2010/6/7 MON 120 135 140 150 165 180
...
16 2010/6/16 WED 150 140 140 200 220 230
17 2010/6/17 THU 150 140 140 200 220 230
18 2010/6/18 FRI 150 140 140 200 220 230
19 2010/6/19 SAT 150 140 140 200 220 230
20 2010/6/20 SUN 150 140 140 200 220 230
21 2010/6/21 MON 150 140 140 200 220 230
22 2010/6/22 TUE 150 140 140 200 220 230
我想对此表进行的查询是,我想获取每个成本和销售列的开始日期以及价格的最后日期更改。我使用以下MYSQL查询设法做到了这一点:
SELECT * FROM rates ID IN(SELECT MIN(ID) FROM `rates` GROUP BY costA,costB,costC,sellA,sellB,sellC) OR ID IN(SELECT MAX(ID) FROM `rates` GROUP BY costA,costB,costC,sellA,sellB,sellC)
我必须解决的问题是,如果例如每个星期三和每个星期五有两个不同的价格,从2010/06/01到2010/06/16。那么如何生成一个查询,可以按工作日给我一个总摘要,如下所述。
id | date | weekday | costA | costB | costC | sellA | sellB | sellC
----------------------------------------------------------------------
01 2010/6/1 TUE 120 135 140 150 165 180
02 2010/6/2 WED 100 100 100 110 120 130
03 2010/6/3 THU 120 135 140 150 165 180
04 2010/6/4 FRI 140 150 160 150 175 180
05 2010/6/5 SAT 120 135 140 150 165 180
06 2010/6/6 SUN 120 135 140 150 165 180
07 2010/6/7 MON 120 135 140 150 165 180
...
16 2010/6/16 WED 100 100 100 110 120 130
17 2010/6/17 THU 150 140 140 200 220 230
18 2010/6/18 FRI 150 140 140 200 220 230
19 2010/6/19 SAT 150 140 140 200 220 230
20 2010/6/20 SUN 150 140 140 200 220 230
21 2010/6/21 MON 150 140 140 200 220 230
22 2010/6/22 TUE 150 140 140 200 220 230
从上表中,我需要生成的报告应该类似于下面的报告。
id | date | weekday | costA | costB | costC | sellA | sellB | sellC
----------------------------------------------------------------------
01 2010/6/1 TUE 120 135 140 150 165 180
02 2010/6/2 WED 100 100 100 110 120 130
03 2010/6/3 THU 120 135 140 150 165 180
04 2010/6/4 FRI 140 150 160 150 175 180
05 2010/6/5 SAT 120 135 140 150 165 180
15 2010/6/15 TUE 120 135 140 150 165 180
16 2010/6/16 WED 100 100 100 110 120 130
17 2010/6/17 THU 150 140 140 200 220 230
22 2010/6/22 TUE 150 140 140 200 220 230
从上表中读取的位置为 2010/06/01至2010/06/16的费率为:
WEEKDAY| costA | costB | costC | sellA | sellB | sellC
SAT 120 135 140 150 165 180
SUN 120 135 140 150 165 180
MON 120 135 140 150 165 180
TUE 120 135 140 150 165 180
WED 100 100 100 110 120 130
THU 120 135 140 150 165 180
FRI 140 150 160 150 175 180
从2010/06/17到2010/06/22
WEEKDAY| costA | costB | costC | sellA | sellB | sellC
SAT 150 140 140 200 220 230
SUN 150 140 140 200 220 230
MON 150 140 140 200 220 230
TUE 150 140 140 200 220 230
WED 150 140 140 200 220 230
THU 150 140 140 200 220 230
FRI 150 140 140 200 220 230
我希望有解决方案来解决这个问题。简而言之,我在这里要做的是生成一个周期性的利率表,它会根据工作日告诉成本/卖出价格的详细信息,并分为动态日期,告诉每个类似周的开始和结束日期。 / p>
答案 0 :(得分:0)
这可以满足您的需求吗?
select weekday,costA,costB,costC,sellA,sellB,sellC, min(date) from_dt, max(date) to_dt
from rates
group by weekday,costA,costB,costC,sellA,sellB,sellC