-
学习SQL语句(强大的groupby与selectfrom模式)
强大的groupby复制代码代码如下:selectstdname,isnull(sum(casestdsubjectwhen'化学'thenResultend),0)[化学],isnull(sum(casestdsubjectwhen'数学'thenResultend),0)[数学],isnull(sum(casestdsubjectwhen'物理'thenResultend),0)[物理],isnull(sum(casestdsubjectwhen'语文'thenResultend),0)[语文]from#studentgroupbystdnamegroupby与sum+case结合,可以将表1中的记录(行)变成表2的字段(列)。Sum里面如果没有case,那么出来的值,只能是全部科目的总和,用了case以后,就是某科的成绩;然后这里用了好几个sum,每个科目一个sum,于是表1中本来某人某科占一条记录的“行”就变成了表2里某人一条记录,每科做一个字段了利用selectfrom(selectfrom)的模式生成SQL语句复制代码代码如下:declare@sqlvarchar(4000...
数据库操作教程 2022-09-23 20:31:24 -
SQL学习笔记六union联合结果集使用
联合结果集新建临时工数据表复制代码代码如下:CREATETABLET_TempEmployee(FIdCardNumberVARCHAR(20),FNameVARCHAR(20),FAgeint,PRIMARYKEY(FIdCardNumber));INSERTINTOT_TempEmployee(FIdCardNumber,FName,FAge)VALUES('1234567890121','Sarani',33);INSERTINTOT_TempEmployee(FIdCardNumber,FName,FAge)VALUES('1234567890122','Tom',26);INSERTINTOT_TempEmployee(FIdCardNumber,FName,FAge)VALUES('1234567890123','Yalaha',38);INSERTINTOT_TempEmployee(FIdCardNumber,FName,FAge)VALUES('1234567890124','Tina',26);INSERTINTOT_TempEmployee(FIdCardNumb...
数据库操作教程 2022-09-23 20:31:05 -
MSSQLSERVER中的BETWEENAND的使用
資料CustomerIdNameRegisterDate1澎澎2007/1/500:00:002丁丁2007/1/600:00:003亞亞2007/1/700:00:00aspx頁面查詢條件:最小日期:[2007-01-06] 最大日期:[2007-01-06]使用的sql:SELECTID,Name,RegisterDateFROMCustomerWHERE(RegisterDateBETWEEN'2007-01-06'AND'2007-01-06')結果是傳回1筆:丁丁,符合我的預期但是如果丁丁的RegisterDate的時間不是00:00:00呢?如果資料是這樣IdNameRegisterDate1澎澎2007/1/500:00:002丁丁2007/1/604:37:003亞亞2007/1/700:00:00一樣的sqlSELECTID,Name,RegisterDateFROMCustomerWHERE(RegisterDateBETWEEN'2007-01-06'AND'2007-01-06')傳回來的是0筆 ...
数据库操作教程 2022-09-23 20:29:40 -
distinct多列问题结合groupby的解决方法
表table1idRegNamePostionSNPersonSN1山东齐鲁制药22322山东齐鲁制药22423北京城建公司22524科技公司2252我想获得结果是idRegNamePostionSNPersonSN1山东齐鲁制药22323北京城建公司22524科技公司2252selectdistinctRegName,PostionSN...
数据库操作教程 2022-09-23 20:28:42 -
SQL复合查询条件(AND,OR,NOT)对NULL值的处理方法
NULL值影响查询条件的结果,并且结果很微妙。 以下是SQL中AND,OR,NOT的真值表...
数据库操作教程 2022-09-23 20:24:31 -
SQLServer中汇总功能的使用GROUPING,ROLLUP和CUBE
第一次看到这样的SQL语句,看不懂,其中用到了下面的不常用的聚集函数:GROUPING用于汇总数据用的运算符:ROLLUPSELECT CASE GROUPING(o.customerid) WHEN 0 THEN o.customerid ELSE '(Total)' END AS AllCustomersSummary, CASE GROUPING(od.orderid) WHEN 0 THEN od.orderid ELSE -1 END AS IndividualCustomerSummary, SUM(od.quantity*od.unitprice) AS price FROM Orders o, [Order Details] od WHERE&...
数据库操作教程 2022-09-23 20:21:35 -
MicrosoftSQLServer的版本区别及选择
对于新接触SQL数据库的人来说,类似这几个问题的有关于SQL版本的问题可以说不少,但又懒得去仔细研究。问题虽然简单,可是影响却不小...
数据库操作教程 2022-09-23 20:17:54 -
利用SQLSERVER建立登录WINDOWS帐号
那一刻,我的心跳到了嗓子眼。运行建立帐号命令,OK!远程登录,输入帐号,密码,OK!终于又进去了!×××××××××××××××××××我忽然发现,数据库服务器登录不了了...
数据库操作教程 2022-09-23 20:15:02 -
TRUNCATE快速删除表中的所有数据
备注与DELETE语句相比,TRUNCATETABLE具有以下优点:所用的事务日志空间较少。DELETE语句每次删除一行,并在事务日志中为所删除的每行记录一个条目...
数据库操作教程 2022-09-23 20:14:43 -
SQLServer中的集合运算:UNION,EXCEPT和INTERSECT示例代码详解
SQLServer中的集合运算包括UNION(合并),EXCEPT(差集)和INTERSECT(相交)三种。集合运算的基本使用1.UNION(合并两个查询结果集,隐式DINSTINCT,删除重复行)--合并两个提取表/派生表(derivedtable),返回结果为:[a,b,c,d,e]SELECTFCFROM(VALUES('a'),('b'),('c'),('e'))Table1(FC)UNIONSELECTFCFROM(VALUES('a'),('b'),('c'),('d'))Table2(FC)2.UNIONALL(简单合并两个查询结果集,不删除重复行)--提取表/派生表(derivedtable)可以是多列,列名、顺序可以不同,但列数必须相同SELECT*FROM(VALUES('a','Anna'),('b','Bob'),('c','Cassie'),('e','Elina'))Table1(FC,Name)UNIONALLSELECT*FROM(VALUES('a','Anna'),('b','Bob'),('c','Cassie'),('d','David'))Ta...
数据库操作教程 2022-09-23 18:25:20 -
秒懂drop、truncate和delete的区别
(1)DELETE语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存以便进行进行回滚操作。TRUNCATETABLE则一次性地从表中删除所有的数据并不把单独的删除操作记录记入日志保存,删除行是不能恢复的...
数据库操作教程 2022-09-23 18:24:42 -
SQL删除语句DROP、TRUNCATE、DELETE的区别
DROP:DROPTABLEtest;删除表test,并释放空间,将test删除的一干二净。TRUNCATE:TRUNCATEtest;删除表test里的内容,并释放空间,但不删除表的定义,表的结构还在...
数据库操作教程 2022-09-23 18:24:10