非典型T_SQL的总结

?

------over的两种常用的用法---

--第一种分组 当然要注意了,这里的分组并不是实际的分组,而是根据你的业务需求而坐的临时分组

?

select

roomguid,Room,

avg(total) over(partition by bldGUID) as 楼栋均价,

AVG(total) over(partition by ProjGUID) as 项目均价

from p_room

?

--产生行号 用来产生行号的时候,over()一定要order by

select

ROW_NUMBER() over(order by roomguid) as rownum

from p_room

?

?

------apply 用法比cross join 更加灵活些

当然apply也是一种表连接join 的用法 ,不过在形式上更加灵活些,他可以不用连接一张完整的表,可以是表的某个字段都行

注意末尾必须要有表的别名,即使别名用不到

cross apply (select 课程,分数 from #T2 where 姓名 =a.姓名) b

--测试代码:

create table #T(姓名 varchar(10))

insert into #T values(‘张三‘)

insert into #T values(‘李四‘)

insert into #T values(NULL )

?
?

?
?

create table #T2(姓名 varchar(10) , 课程 varchar(10) , 分数 int)

insert into #T2 values(‘张三‘ , ‘语文‘ , 74)

insert into #T2 values(‘张三‘ , ‘数学‘ , 83)

insert into #T2 values(‘张三‘ , ‘物理‘ , 93)

insert into #T2 values(NULL , ‘数学‘ , 50)

?

---cross apply ---注意末尾必须要有表的别名

select * from #T as a

cross apply (select 课程,分数 from #T2 where 姓名 =a.姓名) b

?

---outer apply

select * from #T as a

outer apply (select 课程,分数 from #T2 where 姓名 =a.姓名) b

?

-----with 实现递归

with test

as

(

?select UserGUID from MyUser group by UserGUID order by UserGUID

)

select * from test

---以上是一个with用法非常简单的示例,此时你可以将test看成一张临时表,然后再查询使用

?

--1、如果CTE的表达式名称与某个数据表或视图重名,则紧跟在该CTE后面的SQL语句使用的仍然是CTE,当然,后面的SQL语句使用的就是数据表或视图了

--2、使用with要注意的地方:

--3、 不能在 CTE_query_definition 中使用以下子句:

--(1)COMPUTE 或 COMPUTE BY

--(2)ORDER BY(除非指定了 TOP 子句)

--(3)INTO

--(4)带有查询提示的递归成员中不允许出现下列项

? ? --SELECT DISTINCT

? ?-- GROUP BY

? ? --HAVING

? ? --标量聚合

? ? --TOP

? ?-- LEFT、RIGHT、OUTER JOIN(允许出现 INNER JOIN)

? ?-- 子查询 OPTION 子句

--(5)FOR XML

--(6)FOR BROWSE

---4、但with一般是用于实现递归的,如果你想实现递归,那么就必须用union all,其实用cte实现递归查询是比较死的东西 OPTION(MAXRECURSION 1) -- OPTION(MAXRECURSION 1)控制递归的层级数

?

WITH myClass

AS

( ----首先我要根据条件拿到我的根节点

?SELECT ClassFullCode,ClassFullName, 1 as level

?FROM s_class

?WHERE ParentCode = ‘‘ or ParentCode is null

?UNION all

?---根据条件循环遍历 cls.PraentCode = my.ClassFullCode 这就是遍历的条件

?SELECT cls.ClassFullCode,cls.ClassFullName,level + 1

?FROM s_Class cls join myClass my ON cls.ParentCode = my.ClassFullCode

)

SELECT ClassFullCode,ClassFullName,level FROM myClass

OPTION(MAXRECURSION 1) --error 控制递归的层级数

----pivot的用法

SELECT [星期一],[星期二],[星期三],[星期四],[星期五],[星期六],[星期日]--这里是PIVOT第三步(选择行转列后的结果集的列)这里可以用"*"表示选择所有列,也可以只选择某些列(也就是某些天)

--FROM WEEK_INCOME --这里是PIVOT第二步骤(准备原始的查询结果,因为PIVOT是对一个原始的查询结果集进行转换操作,所以先查询一个结果集出来)这里可以是一个select子查询,但为子查询时候要指定别名,否则语法错误

--PIVOT

--(

?-- SUM(INCOME) for [week] in([星期一],[星期二],[星期三],[星期四],[星期五],[星期六],[星期日])--这里是PIVOT第一步骤,也是核心的地方,进行行转列操作。聚合函数SUM表示你需要怎样处理转换后的列的值,是总和(sum),还是平均(avg)还是min,max等等。例如如果week_income表中有两条数据并且其week都是"星期一",其中一条的income是1000,另一条income是500,那么在这里使用sum,行转列后"星期一"这个列的值当然是1500了。后面的for [week] in([星期一],[星期二]...)中 for [week]就是说将week列的值分别转换成一个个列,也就是"以值变列"。但是需要转换成列的值有可能有很多,我们只想取其中几个值转换成列,那么怎样取呢?就是在in里面了,比如我此刻只想看工作日的收入,在in里面就只写"星期一"至"星期五"(注意,in里面是原来week列的值,"以值变列")。总的来说,SUM(INCOME) for [week] in([星期一],[星期二],[星期三],[星期四],[星期五],[星期六],[星期日])这句的意思如果直译出来,就是说:将列[week]值为"星期一","星期二","星期三","星期四","星期五","星期六","星期日"分别转换成列,这些列的值取income的总和。

--)TBL--别名一定要写

?

?

--update 更新方式的总结

create table music

(

id int identity(1,1),

school varchar(200),

name varchar(100)

)

?

insert into music values(‘湖北大学‘,‘陈宏业‘)

insert into music values(‘湖北大学‘,‘陈哲‘),(‘湖北大学‘,‘吕俊‘),(‘湖北大学‘,‘唐虎笑‘),(‘湖北大学‘,‘何文奇‘)

insert into music values(‘武汉科技大学‘,‘徐乐乐‘),(‘湖北大学‘,‘王红‘),(‘湖北大学‘,‘陈磊‘),(‘湖北大学‘,‘魏德洲‘)

?

create table music3

(

?id int ,

?school varchar(200),

?name varchar(200),

?name2 varchar(200)

)

?

select * from music2

---第一种复制语句语法 后面的select 不管你是多表select 还是单表,都无所谓,但是要和前面的类型匹配就ok

insert into music2(id,school,name) select * from music

---第二种 (默认会常见一张新表) 复制某一列 将name换成*则是复制整张表

select name into music5 from music

--自定义复制(筛选条件)

select * into music6 from music where id > 3

select * from music5?

?

---sql 删除语法

DELETE from cb_AdjustKhDtl from cb_AdjustKhDtl inner join cb_CostKh t2 on cb_AdjustKhDtl.CostKhGUID= t2.CostKhGUID?

?

时间: 2024-10-25 08:36:28

非典型T_SQL的总结的相关文章

非典型SOHO的苦与乐

每天睡到自然醒,有车的不用在路上堵,没车的不用在车里挤,干活累了可以看看苍老师或者股市不用担心老板,要认真时不会被同事的聊天或电话烦扰,想放松时可以在位置上吞云吐雾,有另一半的还可以做饭献献殷勤充实生活-- 这应该是很多人梦想的工作状态,在家上班.作为一名IT老男人,我过去常常想,写程序是最适合在家干的工种之一,每天费时费力来办公室,一大堆人在空气未必流畅的房间里,论效率实在不如远程工作,需要的时候在线聊天,视频会议来沟通和讨论需求,部署调错和解决用户问题也可以远程解决. 在我作为一名自由职业者

workflow中的‘非典型’自动触发器trigger_model

Openerp中workflow的设计机制 工作流程系统在OpenERP里是非常有用的机制,可以用于即时描述单据(模型)状态的演进过程.工作流实现了状态流转的可配置,通过迁移的 condition代替python代码中的判断语句,通过迁移的signal增加审批按钮,增加了系统的灵活性.工作流程是完全可以定制的,这些流程可 以调整适用于几乎所有公司的作业流程和交易逻辑. 这个工作流程系统使OpenERP非常有弹性, 而且可以不用编程增加新功能,就可以支持不断变化的需要.对于单据的审批,以及对应的的

SAP成都研究院非典型程序猿,菜园子小哥:当我用UI5诊断工具时我用些什么

身边有些年轻同事曾经向我表达过这种困扰:尽管完成日常工作没有任何问题,但是还想更进一步,把代码写得更好些,做到精益求精.现在写的代码能实现功能,但是不知道可以怎样写得更好. 除了阅读优秀的开源库开源框架,一点一滴积累之外,Jerry的一个建议是大家可以多琢磨琢磨每天工作使用到的一些工具,研究下这些工具里自己感兴趣的那些功能的实现原理.想一想这个功能如果让自己实现,该怎样去设计和编码,琢磨完之后再去看工具的实现,和自己心中所想进行比较.这样一来,既学习了这些工作优秀的设计和实现,又进一步熟悉了工作

GDIPlus非典型误用一例

// ** 初始化GDI+ Gdiplus::GdiplusStartupInput gdiplusStartupInput; // ** 该成员变量用来保存GDI+被初始化后在应用程序中的GDI+标识. ULONG_PTR gdiplusToken; Gdiplus::GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL); Image image( imagePath ); //加载图片 Graphics imageGraph

非典型的千万用户后台之路

三年前,原本我只是个不学无术的数据小码农,空有一腔热情:而当时公司也处在艰难的转型期,旧产品不见起色,新产品前途未卜.想见着也不可能用这么小的数据玩出花来,而新产品的数据也不是一时半会能成规模.还是本着最大限度学习的心思,鼓足勇气和老板提换岗,要去扛后台开发的大旗,最大程度参与到产品的一线去.一个小决定,换来的是整整半年的不眠之夜,眼见着第1个用户到第500万个用户,眼见着1台到4台再到10台服务器,眼见着后台业务由单一的播放到能播放能上传再到有完整的社交交互.从刚开始三天两头崩溃出事故,到最终

一次非典型的SQL报错

昨天调试一个表值函数,结果出现了这个错误. mplicit conversion of varchar value to varchar cannot be performed because the collation of the value is unresolved due to a collation conflict. 奇怪的是,这个函数之前都运行着没问题.经过一番查询,发现是某个字段的SQL Collation修改了导致的. 这个字段刚好是前段时间,导入一些中文数据进行测试的,一开

非典型的scala程序及其编译后的结果

初学Scala Folder structure以及部分代码 package.scala的代码 package comx package object mypkg { def myprint = println("Hello Ji2 in package object") } object mypkg2{ def myprint = println("Hello Ji2 in object") } 命令行 >scalac mypkg/package.scala

一名非典型二流大学生的自述 | 我是如何从菜鸟进化到辣鸡的

人们总是一边不相信鸡汤,一边又奢望鸡汤在关键时刻能够拉自己一把. 成功者不会把那些努力的过程一五一十说出来,因为那些东西太阴暗.太痛苦了. 我当时的苦逼程度,只有我自己最懂. 嗨,我是"积极废人" Hi,我现在是一所二流学院的大二学生. 刚进入大学时,我对于未来,自己想要走哪条路,真的没有考虑那么多.也不会考虑这么多. 想得更多的是社团啊,学生会啊,怎样才能做得更好,表现好点. 那时的自己,可以说是"积极废人",积极玩游戏,什么都不会的人... 每次上完课,就像脱缰

[似水流年]非典型男子汉夜晚短念

今晚,很静.微光透过窗帘的缝隙映在枕头上,侧着脸庞望向亮,耳畔熟悉的音乐时空放送着缓缓的暖流,不知觉到了昨日青空.方闭目丢掉的念想又回来了,停下曲,我还是写点什么.最怀念的竟也是初始,厅中哒哒的鞋跟,路口光下的细影,隔壁座中的噗笑.不知不觉我想要拿出我珍视的共分享,但多少有些自作主张.心比心时的设身处地让我看起来更像一个没定念的幼稚鸟,自我触动的绵软细节让事情看起来更像是无关痛痒的小计较.虽不达意可我竟忘记了这些事悄悄中带来的共同的灰心与沮丧,慢慢累积到了现状.波澜没有像影视剧中那样成为久远的铺