日期:2014-05-18  浏览次数:20532 次

关于查询结果的合并并生成新表
我有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补上。