当前位置: 代码迷 >> Sql Server >> 关于查询结果的合龙并生成新表
  详细解决方案

关于查询结果的合龙并生成新表

热度:4   发布时间:2016-04-27 12:04:47.0
关于查询结果的合并并生成新表
我有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 ascunion 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补上。
  相关解决方案