将A表和B表的UNION结果INSERT到C表中~求助`部分代码已列出~

too1998 2010-05-07 04:37:17
A表
select * from xc_wjrecord
sdepotname sprogramname sprogramname spersonname dusestarttime duseendtime
科教部 科教部特别节目 科教部特别节目 测试1 2010-01-28 11:35:00.000 2010-01-28 11:37:59.000
科教部 科教部特别节目 科教部特别节目 测试1 2010-01-28 11:35:00.000 2010-01-28 11:37:59.000
科教部 科教部特别节目 科教部特别节目 测试1 2010-01-28 16:04:13.000 2010-01-28 23:59:59.000
科教部 科教部特别节目 科教部特别节目 测试1 2010-01-29 00:00:00.000 2010-01-29 23:59:59.000
科教部 科教部特别节目 科教部特别节目 测试1 2010-01-31 00:00:00.000 2010-02-01 15:45:48.000

B表
select * from xc_wjmasterdevice
sdepotname sprogramname sprogramname spersonname typename dusestarttime duseendtime
专题部 今晚大件事 今晚大件事 何少敏 D-BET格式摄像机 2010-04-16 14:05:32.000 2010-04-16 15:13:14.000
专题部 今晚大件事 今晚大件事 何少敏 D-BET格式摄像机 2010-04-16 14:05:32.000 2010-04-16 15:13:14.000

A表和B表的差别就是多一个typename字段`其它字段一样,现在我让两个表关联`我用一个UNION`SELECT语句如下:
select a.sdepotname,a.sprogramname,a.spersonname,b.typename,
round(datediff(n,min(a.dusestarttime),max(a.duseendtime))/60.00,2) as ctime from xc_wjrecord a,xc_wjmasterdevice b
where a.id=b.id
group by a.sdepotname,a.sprogramname,a.spersonname,b.typename
union
select a.sdepotname,a.sprogramname,a.spersonname,b.sdevtype as typename,
round(datediff(n,min(a.dusestarttime),max(a.duseendtime))/60.00,2) as ctime from xc_wjrecord a,xc_wjslavedevice b
where a.id=b.id
group by a.sdepotname,a.sprogramname,a.spersonname,b.sdevtype

表.xc_wjrecord 中没有typename字段,需要UNION表.xc_wjmasterdevice关联
得到结果如下:

sdepotname sprogramname spersonname typename ctime
大型活动部 晚会制作 刘平 D-BET格式摄像机 160.470000
大型活动部 晚会制作 刘平 充电器 160.470000
大型活动部 晚会制作 刘平 电池 160.470000
大型活动部 晚会制作 刘平 广角镜头 160.470000
大型活动部 晚会制作 刘平 话筒 160.470000
大型活动部 晚会制作 刘平 脚架 160.470000
大型活动部 晚会制作 刘平 栏目外景灯具 94.720000

现我我想将上面的结果INSERT到一个新表C中,C表的字段为中文(为了方便打印出来)
字段为(使用部门,节目名称,设备预约人,设备类型,用时合计)
~~~~写了很久都写不好`
我用了以下方法:
1)用视图
create view 视图名
as
select * from 表1 union select * from 表2 ……
(2)复制表
select into 新表(注:无需创建)
from
(select * from 表1 union select * from 表2)
2.insert into 新表(注:需新建后才可以引用)
(select * from 表1 union select * from 表2)


帮忙写一个INSERT到C表的全部语句~最好能运行成功的`~真的不要再给例子了`但是也写不好`~~跪求达人`~~~~~~~~~~~~~~~~~~~帮忙`~我是刚进公司的新手程序员`这是任务`想哭了`~写不出来啊`~
分只有那么多了,希望高手救救我`~我全部的分都给出来`了`~




“round(datediff(n,min(a.dusestarttime),max(a.duseendtime))/60.00,2) as ctime”是将时间浍总~写入新列CTIME

...全文
95 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
too1998 2010-05-10
  • 打赏
  • 举报
回复
#10楼`这个报错啊`提示:
服务器:消息 207,级别 16,状态 3,行 1
列名‘typename’ 无效。
服务器:消息 207,级别 16,状态 1,行 1
列名‘typename’ 无效。
htl258_Tony 2010-05-10
  • 打赏
  • 举报
回复
create view vw_test
as
select a.sdepotname 使用部门,a.sprogramname 节目名称,a.spersonname 设备预约人,b.typename 设备类型,
round(datediff(n,min(a.dusestarttime),max(a.duseendtime))/60.00,2) as 用时合计
from xc_wjrecord a,xc_wjmasterdevice b
where a.id=b.id and b.typename='D-BET格式摄像机'
group by a.sdepotname,a.sprogramname,a.spersonname,b.typename
union
select a.sdepotname,a.sprogramname,a.spersonname,b.sdevtype as typename,
round(datediff(n,min(a.dusestarttime),max(a.duseendtime))/60.00,2) as ctime from xc_wjrecord a,xc_wjslavedevice b
where a.id=b.id and b.typename='D-BET格式摄像机'
group by a.sdepotname,a.sprogramname,a.spersonname,b.sdevtype
too1998 2010-05-10
  • 打赏
  • 举报
回复
又有个问题了~假如我现在只想查找typename=‘D-BET格式摄像机’或者其它的设备名字,功能也像上面的那样,两个表UNION后再INSERT到C表中,请问怎么写?
--小F-- 2010-05-07
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 too1998 的回复:]
#4楼的好强大`运行OK了`太谢谢你了`~等会儿我要将这些语句折到ASP。NET里去``~
不过我不明白 最后的那个 T 是啥意思啊?

#1楼的也谢谢你`你写的也是对的`非常感谢你`

#3楼的,虽然你的运行报错,但是也非常感谢你

谢谢大家了`
[/Quote]

T是别名 是语法的要求 在嵌套查询的子查询需要加个别名
htl258_Tony 2010-05-07
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 too1998 的回复:]
#4楼的好强大`运行OK了`太谢谢你了`~等会儿我要将这些语句折到ASP。NET里去``~
不过我不明白 最后的那个 T 是啥意思啊?

#1楼的也谢谢你`你写的也是对的`非常感谢你`

#3楼的,虽然你的运行报错,但是也非常感谢你

谢谢大家了`
[/Quote] T 是指定派生表的一个表别名。
htl258_Tony 2010-05-07
  • 打赏
  • 举报
回复
create view vw_test
as
select a.sdepotname 使用部门,a.sprogramname 节目名称,a.spersonname 设备预约人,b.typename 设备类型,
round(datediff(n,min(a.dusestarttime),max(a.duseendtime))/60.00,2) as 用时合计
from xc_wjrecord a,xc_wjmasterdevice b
where a.id=b.id
group by a.sdepotname,a.sprogramname,a.spersonname,b.typename
union
select a.sdepotname,a.sprogramname,a.spersonname,b.sdevtype as typename,
round(datediff(n,min(a.dusestarttime),max(a.duseendtime))/60.00,2) as ctime from xc_wjrecord a,xc_wjslavedevice b
where a.id=b.id
group by a.sdepotname,a.sprogramname,a.spersonname,b.sdevtype
?
too1998 2010-05-07
  • 打赏
  • 举报
回复
#4楼的好强大`运行OK了`太谢谢你了`~等会儿我要将这些语句折到ASP。NET里去``~
不过我不明白 最后的那个 T 是啥意思啊?

#1楼的也谢谢你`你写的也是对的`非常感谢你`

#3楼的,虽然你的运行报错,但是也非常感谢你

谢谢大家了`
永生天地 2010-05-07
  • 打赏
  • 举报
回复
运行试试
select * into C from (
select a.sdepotname as 使用部门,a.sprogramname as 节目名称,a.spersonname as 设备预约人,b.typename as 设备类型,
round(datediff(n,min(a.dusestarttime),max(a.duseendtime))/60.00,2) as 用时合计 from xc_wjrecord a,xc_wjmasterdevice b
where a.id=b.id
group by a.sdepotname,a.sprogramname,a.spersonname,b.typename
union
select a.sdepotname,a.sprogramname,a.spersonname,b.sdevtype as typename,
round(datediff(n,min(a.dusestarttime),max(a.duseendtime))/60.00,2) as ctime from xc_wjrecord a,xc_wjslavedevice b
where a.id=b.id
group by a.sdepotname,a.sprogramname,a.spersonname,b.sdevtype
) T
bancxc 2010-05-07
  • 打赏
  • 举报
回复
insert into C(使用部门,节目名称,设备预约人,设备类型,用时合计)
Select * from
(select a.sdepotname,a.sprogramname,a.spersonname,b.typename,
round(datediff(n,min(a.dusestarttime),max(a.duseendtime))/60.00,2) as ctime
into c
from xc_wjrecord a,xc_wjmasterdevice b
where a.id=b.id
group by a.sdepotname,a.sprogramname,a.spersonname,b.typename
union
select a.sdepotname,a.sprogramname,a.spersonname,b.sdevtype as typename,
round(datediff(n,min(a.dusestarttime),max(a.duseendtime))/60.00,2) as ctime from xc_wjrecord a,xc_wjslavedevice b
where a.id=b.id
group by a.sdepotname,a.sprogramname,a.spersonname,b.sdevtype) tb
too1998 2010-05-07
  • 打赏
  • 举报
回复
楼下的朋友INSERT是OK的`~谢谢你了~~可是我笨`~
是这样的`如果我的C表存在~它是个空表~字段为(使用部门,节目名称,设备预约人,设备类型,用时合计)
将UNION的结果插入到C表中,要怎么写INSERT语句`谢谢你了~~能帮我看看吗?
mujian1986 2010-05-07
  • 打赏
  • 举报
回复
select a.sdepotname,a.sprogramname,a.spersonname,b.typename,
round(datediff(n,min(a.dusestarttime),max(a.duseendtime))/60.00,2) as ctime
into c
from xc_wjrecord a,xc_wjmasterdevice b
where a.id=b.id
group by a.sdepotname,a.sprogramname,a.spersonname,b.typename
union
select a.sdepotname,a.sprogramname,a.spersonname,b.sdevtype as typename,
round(datediff(n,min(a.dusestarttime),max(a.duseendtime))/60.00,2) as ctime from xc_wjrecord a,xc_wjslavedevice b
where a.id=b.id
group by a.sdepotname,a.sprogramname,a.spersonname,b.sdevtype
本课程是PowerBI系列课程之DAX函数专题讲解,包含以下内容 1.  DAX函数基础知识什么是DAX函数数学函数:ABS、DIVIDE、MOD、RAND、ROUND、FIXED等日期和时间函数: CALENDAR、CALENDARAUTO、MONTH、YEAR、DATE、DT等信息函数:USERNAME、USERPRINCIPALNAME、HASONEFILTER、HASONEVALUE、ISFILTERED、ISCROSSFILTERED、ISINSCOPE、ISBLANK、SELECTEDMEASURE、SELECTEDMEASURENAME等逻辑函数:AND、OR、IF、IFERROR、SWITCH、TRUE、FALSE、COALESCE(官方文档含糊不清-结合实例)等关系函数:CROSSFILTER、RELATED、RELATEDTABLE等筛选器函数:FILTER、CALCULATE、ALL、ALLEXCEPT、ALLSELECTED、EARLIER、KEEPFILTERS、REMOVEFILTERS、SELECTEDVALUE、LOOKUPVALUE等父子函数:PATH、PATHCONTAINS、PATHITEM、PATHLENGTH等统计函数:AVERAGE、COUNT、MAX、MIN、SUM等迭代统计函数:AVERAGEX、COUNTX、MAXX、MINX、SUMX、RANKX等函数: FILTERS 、ADDCOLUMNS、 SELECTCOLUMNS、 CROSSJOIN、 EXCEPT、 GENERATE、 GROUPBY、 SUMMARIZE、 SUMMARIZECOLUMNS、 TOPN、 TREATAS、 UNION、 VALUES、DISTINCT、DATATABLE、NATUALINNERJOIN、NATRUALLEFTOUTERJOIN等文本函数: EXACT、MID、 FIND、 LEN、 REPT、 LOWER、 UPPER、 UNICHAR等时间智能函数:DATEADD、DATESMTD、FIRSTDATE、LASTDATE、SAMEPERIODLASTYEAR等财务函数:2020.7之后发布的,和Excel中财务函数相似,网页和demo pbix简单介绍其他函数:BLANK、ERROR、IFERROR等 DAX函数初体验:Max、Sum、Divide、if、Values等值函数函数以及和列的概念DAX函数术语、语法、运算符DAX运算符和引擎中字母大小写问题DAX编程注释和快捷键DAX与Excel函数的共同点和区别(PPT)DAX、xmSQL与SQL达式的区别(PPT)DAX函数的自学途径 2.  PowerBI中数据建模知识维度建模关系传递和交叉筛选器方向-理解关系(1v1, 1vM, Mv1,MvM)两个方向上应用安全筛选器关闭关系自动检测新建计算列新建度量值新建计算:辅助(五种方式)、日历数据类型讲解数据格式控制:%、$、千位分隔符、小数位、日期格式Format函数自定义数据格式Convert函数做数据类型转换解决中文数字单位 万 的显示问题Date和DT函数定义固定日期值显示和隐藏列DAX代码分析器阅读DAX达式方法:从上至下、由内到外(注意Calculate的计算顺序)调试DAX达式方法:分布输出或VAR输出3.  DAX函数原理 Vertipaq列式数据库原理理解度量值和计算列理解行上下文和筛选上下文:Calculate示意图行上下文中使用VAR替代EARLIERVAR变量在定义时的上下文中计算VAR变量是采用惰性计算(使用时计算)理解扩展和RELATED函数理解数据沿袭Lineage 4.  开始感知DAX函数的强大DAX函数实现特殊符号的使用DAX函数实现切片器默认当前月或天DAX函数使切片器默认代无任何选择DAX函数使切片器仅显示有数据的选项DAX函数使切片器反向筛选和计算DAX函数使切片器之间取并集DAX函数使关系中多端的切片器筛选一端的切片器 DAX函数实现年月共同决定数据排序DAX函数实现动态图标题DAX函数实现动态图配色和图标DAX函数实现动态纵坐标DAX函数实现动态横坐标5.  理解重点DAX函数重中之重FILTER 和 CALCULATE和CALCULATETABLE详解调节器REMOVEFILTERS和ALL、ALLEXCEPT函数调节器ALL、ALLSELECTED和ISINSCOPE占比分析调节器AllSELECTED和KEEPFILTERS的比较调节器USERELATIONSHIP激活关系调节器TREATAS动态建立关系调节器CROSSFILTER改变筛选器方向重点之ISFILTERED和ISCROSSFILTERED重点之HASONEVALUE和ISINSCOPE的区别重点之函数SELECTEDCOLUMNS和ADDCOLUMNS重点之函数NATUALINNERJOIN和NATRUALLEFTOUTERJOIN重点之函数FILTERS和VALUES比较重点之VALUES和DISTINCT的区别重点之分组函数SUMMARIZECOLUMNS详解重点之函数LOOKUPVALUE vs RELATED vs VLOOKUP 重点之集合函数UNION、INTERSECT、EXCEPT重点之集合函数CROSSJOIN和GENERATE 笛卡尔积重点之值合并、列合并、合并CONCATENATEX重点之BLANK行产生的原因和BLANK相关函数重点之COALESCE函数处理空重点之FIRSTNOBLANK和FIRSTNOBLANKVALUE函数重点之使用VAR变量的列重点之Error和IfError函数6.  实际案例-日期时间和时间智能相关关键点-日期和事实关联问题时间智能-同比环比分析时间智能-累计聚合、滚动聚合、移动平均时间智能-期初期末库存分析日期分析-计算任意所选月份的环比日期分析-周的同比环比和周聚合日期分析-指定月份的同比环比和季度环比日期分析-计算季末或季末月份的数据日期分析-趋势图中根据最近月份取TopN日期分析-动态指定某个日期区间分析日期分析-动态任意区间段做数据对比日期分析-实现两个日期列的范围筛选日期分析-按工作日计算日期差日期分析-计算最近两次购买日期差日期分析-根据历史数据做销售预测日期时间函数和时间智能函数使用总结7.  实际案例-DAX函数进阶进阶-解决列排序对计算的影响进阶-实现切片器筛选之间的OR逻辑进阶-矩阵Matrix中高亮显示最大值最小值进阶-DAX列转行 vs 矩阵列转行和逆透视进阶-非日期类型的累计聚合进阶-排名逻辑的4种实现-RANKX详解进阶-分组内排名的实现和理解迭代函数进阶-TopN/BottomN和Others的实现进阶-TopN中实现动态指标进阶-TopN中实现N的动态进阶-分组内动态TopN和Others 进阶-商品折上折-迭代函数SUMX详解 进阶-分析客户购买行为进阶-找出无购买行为的客户进阶-客户购买商品关联度分析 进阶-新客户分析进阶-流失客户分析进阶-回流客户分析进阶-客户购买频次和区间分析进阶-RFM客户价值分析进阶-帕累托分析进阶-盈亏平衡分析报性能优化思路(PPT)  

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧