我的查询三个查询语句分别如下:
SELECT CONVERT(CHAR(4),da,121) AS 日期,avg(pv) as 上旬 FROM chuxiong
WHERE year(da) BETWEEN 1963 AND 1990 and DATEPART(MONTH,da)=2 and day(da)<=10
GROUP BY CONVERT(CHAR(4),da,121)
SELECT CONVERT(CHAR(4),da,121) AS 日期,avg(pv) as 中旬 FROM chuxiong
WHERE year(da) BETWEEN 1963 AND 1990 and DATEPART(MONTH,da)=2 and day(da)>10 and day(da)<=20
GROUP BY CONVERT(CHAR(4),da,121)
SELECT CONVERT(CHAR(4),da,121) AS 日期,avg(pv) as 下旬 FROM chuxiong
WHERE year(da) BETWEEN 1963 AND 1990 and DATEPART(MONTH,da)=2 and day(da)>20
GROUP BY CONVERT(CHAR(4),da,121)
我试过用一下合成方式,两张表的时候是对的,三张表就有错误
select a.*,b.中旬,c.下旬 from
(SELECT CONVERT(CHAR(4),da,121) AS 日期,avg(pv) as 上旬 FROM chuxiong
WHERE year(da) BETWEEN 1963 AND 1990 and DATEPART(MONTH,da)=2 and day(da)<=10
GROUP BY CONVERT(CHAR(4),da,121))as a
inner join
(SELECT CONVERT(CHAR(4),da,121) AS 日期,avg(pv) as 中旬 FROM chuxiong
WHERE year(da) BETWEEN 1963 AND 1990 and DATEPART(MONTH,da)=2 and day(da)>10 and day(da)<=20
GROUP BY CONVERT(CHAR(4),da,121))as b
inner join
(SELECT CONVERT(CHAR(4),da,121) AS 日期,avg(pv) as 下旬 FROM chuxiong
WHERE year(da) BETWEEN 1963 AND 1990 and DATEPART(MONTH,da)=2 and day(da)>20
GROUP BY CONVERT(CHAR(4),da,121))as c
on a.日期= b.日期=c .日期
不知道是哪里写错了,求助各位大神怎么把以上三张表合成一张
------解决思路----------------------
select a.*,b.中旬,c.下旬 from
(SELECT CONVERT(CHAR(4),da,121) AS 日期,avg(pv) as 上旬 FROM chuxiong
WHERE year(da) BETWEEN 1963 AND 1990 and DATEPART(MONTH,da)=2 and day(da)<=10
GROUP BY CONVERT(CHAR(4),da,121))as a
inner join
(SELECT CONVERT(CHAR(4),da,121) AS 日期,avg(pv) as 中旬 FROM chuxiong
WHERE year(da) BETWEEN 1963 AND 1990 and DATEPART(MONTH,da)=2 and day(da)>10 and day(da)<=20
GROUP BY CONVERT(CHAR(4),da,121))as b
inner join
(SELECT CONVERT(CHAR(4),da,121) AS 日期,avg(pv) as 下旬 FROM chuxiong
WHERE year(da) BETWEEN 1963 AND 1990 and DATEPART(MONTH,da)=2 and day(da)>20
GROUP BY CONVERT(CHAR(4),da,121))as c
on a.日期= b.日期=c .日期
您这语法错了, 结果集A join 结果集B的时候没有关联条件
select a.*,b.中旬,c.下旬 from
(SELECT CONVERT(CHAR(4),da,121) AS 日期,avg(pv) as 上旬 FROM chuxiong
WHERE year(da) BETWEEN 1963 AND 1990 and DATEPART(MONTH,da)=2 and day(da)<=10
GROUP BY CONVERT(CHAR(4),da,121))as a
inner join
(SELECT CONVERT(CHAR(4),da,121) AS 日期,avg(pv) as 中旬 FROM chuxiong
WHERE year(da) BETWEEN 1963 AND 1990 and DATEPART(MONTH,da)=2 and day(da)>10 and day(da)<=20
GROUP BY CONVERT(CHAR(4),da,121))as b ON a.日期=b.日期
inner join
(SELECT CONVERT(CHAR(4),da,121) AS 日期,avg(pv) as 下旬 FROM chuxiong
WHERE year(da) BETWEEN 1963 AND 1990 and DATEPART(MONTH,da)=2 and day(da)>20
GROUP BY CONVERT(CHAR(4),da,121))as c
on b.日期=c .日期