以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  sql语句使用求助  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=180223)

--  作者:zsxx999ja
--  发布时间:2022/10/8 20:57:00
--  sql语句使用求助
下面是我用sql语名查询的三个表且组合起来的句子,测试没有问题

S ELECT  会议时间 as 日期, sy , 参加人 as 人员
FROM   dbo.短信内容 where 会议时间 > \'2022/01/01\'
union
S ELECT  出差起日期 as 日期, convert(varchar(200),事由) as 事由, 参加人员 as 人员
FROM   dbo.督导组下校登记 where 出差起日期 > \'2022/01/01\'
union
S ELECT  出差时间 as 日期, CONVERT(VARCHAR(200),内容) as 事由, 参加人 as 人员
FROM     dbo.笔记本与档案 where 出差时间 > \'2022/01/01\'
order by 日期;

这里where语句滤是分表过滤的,能否在组合后再过滤,我用where和 having都没能成功,如何写?

--  作者:有点蓝
--  发布时间:2022/10/8 21:37:00
--  
select * from (S ELECT  会议时间 as 日期, sy as  事由, 参加人 as 人员
FROM   dbo.短信内容 
union
S ELECT  出差起日期 as 日期, convert(varchar(200),事由) as 事由, 参加人员 as 人员
FROM   dbo.督导组下校登记 
union
S ELECT  出差时间 as 日期, CONVERT(VARCHAR(200),内容) as 事由, 参加人 as 人员
FROM     dbo.笔记本与档案 ) as a where 日期 > \'2022/01/01\' order by 日期;

其实先过滤再合并效率更高,虽然代码多了
[此贴子已经被作者于2022/10/8 21:37:44编辑过]