关于查询结果的合并并生成新表
我有3张表HistoryData(历史数据)、LastData(当前数据)和SiteInfo(站点信息),
其中HistoryData和LastData拥有字段SiteID(站点编号)、YuLiang(即时雨量)、Date_Time(当前时间),只是LastData只有当前1天的数据,而HistoryData则是包括所有日期的数据。
SiteInfo拥有字段SiteID、SiteName
查询语句1:cmd1=select LastData.siteid,siteinfo.sitename,lastdata.todayyl(日雨量),lastdata.date_time from lastdata full outer join siteinfo on lastdata.siteid=siteinfo.siteid order by lastdata.siteid asc(只有11条记录)
查询语句2:cmd2=SELECT top 11 SiteID,SUM(YuLiang)as YYL,convert(varchar(4),Date_Time,120)as Ydate FROM [GQ-QiaoYing].[dbo].[HistoryData] group by SiteID,convert(varchar(4),Date_Time,120) order by convert(varchar(4),Date_Time,120) desc,SiteID asc
查询语句3:cmd3=SELECT top 11 SiteID,SUM(YuLiang)as MYL,convert(varchar(7),Date_Time,120)as Mdate FROM [GQ-QiaoYing].[dbo].[HistoryData] group by SiteID,convert(varchar(7),Date_Time,120) order by convert(varchar(7),Date_Time,120) desc,SiteID asc
有11个站点,语句2和语句3分别检索出当前年和当前月的雨量值,并赋予别名YYL和MYL,请问,如何将3张表结合成1张表,谢谢
------解决方案--------------------
SQL code
--查询语句1 有4个字段
select
LastData.siteid,
siteinfo.sitename,
lastdata.todayyl(日雨量),
lastdata.date_time
from lastdata
full outer join siteinfo on lastdata.siteid=siteinfo.siteid
union all
--查询语句2有3个字段
SELECT
top 11 SiteID,
SUM(YuLiang)as YYL,
convert(varchar(4),Date_Time,120)as Ydate
FROM [GQ-QiaoYing].[dbo].[HistoryData]
group by SiteID,convert(varchar(4),Date_Time,120)
order by convert(varchar(4),Date_Time,120) desc,SiteID asc
union all
--查询语句3有3个字段
SELECT
top 11 SiteID,
SUM(YuLiang)as MYL,
convert(varchar(7),Date_Time,120)as Mdate
FROM [GQ-QiaoYing].[dbo].[HistoryData]
group by SiteID,convert(varchar(7),Date_Time,120)
order by convert(varchar(7),Date_Time,120) desc,SiteID as
/*
先把查询字段统一4个或者3个,
然后使用Union 或者 Union All
Union All:3张查询出来的表数据放到一起
Union :3张查询出来的表数据放到一起,过滤重复的
*/
------解决方案--------------------
你的查询语句的字段个数不一样。不明白你的合并是个什么养的。建议给出测试数据,期待结果
------解决方案--------------------
不一样的话 字段不对应的地方用NULL补上。