周一至周五 : 08:30 - 17:30 客服专员电话/微信:17301649370 QQ:2902102332
微信咨询

扫码微信咨询

关注公众号

关注微信公众号

电话: 021 5161 9370
返回顶部
SQL UNION 和 UNION ALL 说明
显示全部楼层 倒序浏览 发表日期 2014-04-15 14:36:27 8067次阅读 8次回复
SQL UNION 操作符
UNION 操作符用于合并两个或多个 SELECT 语句的结果集。
请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。

SQL UNION 语法
SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2
注释:默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。

SQL UNION ALL 语法
SELECT column_name(s) FROM table_name1
UNION ALL
SELECT column_name(s) FROM table_name2

另外,UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。


联系QQ:1327452797
学习了,希望多出类似的好帖。
学习SQL语句有点难啊,操作到是强大。
本示例是将多个来源的数据合并为一个视图,表间公式将再将视图作为数据来源提取统计

  1. CREATE VIEW [dbo].[KB_VIEW_工程成本明细]
  2. AS
  3. /*产值数据*/
  4. SELECT '产值' AS 分类项目, F_667 AS 项目部, F_436 AS 录入人,
  5. F_437 AS 录入日期, F_464 AS 本日完成数量, F_465 AS 单价, F_466 AS 产值
  6. FROM T_102, T_106
  7. WHERE 1 = 1 AND T_102.ID = T_106.ID

  8. /*合并机械费数据*/
  9. UNION ALL
  10. SELECT '机械费' AS 机械费, F_664 AS 项目部, F_309 AS 开票人, F_310 AS 录入日期,
  11. F_314 AS 结算时长, F_315 AS 单价, F_316 AS 金额
  12. FROM T_79, T_80
  13. WHERE 1 = 1 AND T_79.ID = T_80.ID
  14. /*同上合并其他费用数据*/
复制代码
下面是分不同条件统计不同阶段的汇总

  1. --本年度之前累计数
  2. SELECT [分类项目],SUM([产值])
  3. FROM [xtlq].[dbo].[KB_VIEW_工程成本明细]
  4. WHERE YEAR(录入日期) < YEAR(GETDATE())
  5. GROUP BY 分类项目

  6. --本月产值
  7. SELECT [分类项目],SUM([产值])
  8. FROM [xtlq].[dbo].[KB_VIEW_工程成本明细]
  9. WHERE YEAR(录入日期) = YEAR(GETDATE()) AND MONTH(录入日期) = MONTH(GETDATE())
  10. GROUP BY 分类项目

  11. --到本月初累计数
  12. SELECT [分类项目],SUM([产值])
  13. FROM [xtlq].[dbo].[KB_VIEW_工程成本明细]
  14. WHERE YEAR(录入日期) = YEAR(GETDATE()) AND MONTH(录入日期) < MONTH(GETDATE())
  15. GROUP BY 分类项目
复制代码

电话/微信:18049989370 QQ:857188287
wujixin

2015-4-16 18:13:31

这个太难了,根本不知道怎么写到快表中去,快表稍微复杂点的操作就要写sql,很难深入
wujixin 发表于 2015-4-16 18:13
这个太难了,根本不知道怎么写到快表中去,快表稍微复杂点的操作就要写sql,很难深入

没有这么高级的功能,怎么能处理千变万化的需求?
看来你还是没有真正的使用,如果真正的使用了,你会发现此功能是多么的强大。
否则来了个需求,根本无法实现,系统基本陷入进退两难的境地。你只能等待厂商开发对应的功能,等待是很难熬的... ...
联系QQ:1327452797
这个查询出来的列表能填充到明细表里吗?
xzlzl

2020-8-24 08:51:01

wujixin 发表于 2015-4-16 18:13
这个太难了,根本不知道怎么写到快表中去,快表稍微复杂点的操作就要写sql,很难深入

同感,对于我们这些sql小白,这个弄起来晕头转向!不懂sql寸步难行!

精彩评论8

学习了,希望多出类似的好帖。
学习SQL语句有点难啊,操作到是强大。
本示例是将多个来源的数据合并为一个视图,表间公式将再将视图作为数据来源提取统计

  1. CREATE VIEW [dbo].[KB_VIEW_工程成本明细]
  2. AS
  3. /*产值数据*/
  4. SELECT '产值' AS 分类项目, F_667 AS 项目部, F_436 AS 录入人,
  5. F_437 AS 录入日期, F_464 AS 本日完成数量, F_465 AS 单价, F_466 AS 产值
  6. FROM T_102, T_106
  7. WHERE 1 = 1 AND T_102.ID = T_106.ID

  8. /*合并机械费数据*/
  9. UNION ALL
  10. SELECT '机械费' AS 机械费, F_664 AS 项目部, F_309 AS 开票人, F_310 AS 录入日期,
  11. F_314 AS 结算时长, F_315 AS 单价, F_316 AS 金额
  12. FROM T_79, T_80
  13. WHERE 1 = 1 AND T_79.ID = T_80.ID
  14. /*同上合并其他费用数据*/
复制代码
下面是分不同条件统计不同阶段的汇总

  1. --本年度之前累计数
  2. SELECT [分类项目],SUM([产值])
  3. FROM [xtlq].[dbo].[KB_VIEW_工程成本明细]
  4. WHERE YEAR(录入日期) < YEAR(GETDATE())
  5. GROUP BY 分类项目

  6. --本月产值
  7. SELECT [分类项目],SUM([产值])
  8. FROM [xtlq].[dbo].[KB_VIEW_工程成本明细]
  9. WHERE YEAR(录入日期) = YEAR(GETDATE()) AND MONTH(录入日期) = MONTH(GETDATE())
  10. GROUP BY 分类项目

  11. --到本月初累计数
  12. SELECT [分类项目],SUM([产值])
  13. FROM [xtlq].[dbo].[KB_VIEW_工程成本明细]
  14. WHERE YEAR(录入日期) = YEAR(GETDATE()) AND MONTH(录入日期) < MONTH(GETDATE())
  15. GROUP BY 分类项目
复制代码

电话/微信:18049989370 QQ:857188287
wujixin

2015-4-16 18:13:31

这个太难了,根本不知道怎么写到快表中去,快表稍微复杂点的操作就要写sql,很难深入
wujixin 发表于 2015-4-16 18:13
这个太难了,根本不知道怎么写到快表中去,快表稍微复杂点的操作就要写sql,很难深入

没有这么高级的功能,怎么能处理千变万化的需求?
看来你还是没有真正的使用,如果真正的使用了,你会发现此功能是多么的强大。
否则来了个需求,根本无法实现,系统基本陷入进退两难的境地。你只能等待厂商开发对应的功能,等待是很难熬的... ...
联系QQ:1327452797
这个查询出来的列表能填充到明细表里吗?
xzlzl

2020-8-24 08:51:01

wujixin 发表于 2015-4-16 18:13
这个太难了,根本不知道怎么写到快表中去,快表稍微复杂点的操作就要写sql,很难深入

同感,对于我们这些sql小白,这个弄起来晕头转向!不懂sql寸步难行!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则  允许回帖邮件提醒楼主

快表软件是国内较早研究表格类软件开发平台的团队之一,迄今已有十多年的行业经验.致力于为企事业单位提供实用可靠的数字化平台。
  • 微信公众号

  • 微信小商店

  • 微信客服

  • Powered by Discuz! X3.4 | Copyright © 2022-2024, XiRong Soft. | 快表软件
  • 沪ICP备13033196号 | 营业执照 |上海西戎软件科技有限公司|沪公网安备31011502002146号|沪ICP备13033196号 |