1.汇总时值为空是默认显示0
select isnull(sum(字段名称),0) from 表名;
2.判断表中是否存在记录的SQL语句
判断表中是否存在记录,我们惯常使用的语句是:
select COUNT(*) from tableName where conditions
如果只是判断记录是否存在,而不需要获取实际表中的记录数,网上还有一种推荐做法:
if exists (select * from tableName where conditions) select '1' else select '0'
通过返回值去判断是否存在。
View Code
IF EXISTS(SELECT * from dbo.PMP_MilestonPlanDtl1 wHERE Xm_SubItemID='@ItemSubCode') SELECT OID,RefPK, Mil_Name,Mil_StartDate, Mil_EendDate, Mil_Percent, CreateUserID, CreateDate, Xm_SubItemID, Xm_SubItemName FROM dbo.PMP_MilestonPlanDtl1 WHERE Xm_SubItemID='@ItemSubCode' ELSE select sectionname AS Mil_Name,pstartdate AS Mil_StartDate,penddate AS Mil_EendDate,pfpersent AS Mil_Percent from uf_xmglnet.dbo.pmp_Milestonedefine where itemsubID='@ItemSubCode' and ismilestone=1
3.多行结果转换为一行,有逗号隔开
代码:
View Code
-- 多行 select tid from typeinfo where pid=4 -- 一行 select STUFF((Select ','+Convert(varchar(50),tid) FROM typeinfo where pid=4 FOR XML PATH('')),1,1,'') as tid
如图:

4.Sql Server常用时间段查询汇总
实例(我的)表名:mytable 字段名:mydate
(一)、当天(某两个时间段)
select * from mytable where DATEDIFF(dd,mydate,GETDATE())=0
语法:DATEDIFF(datepart,startdate,enddate)
意义:DATEDIFF() 函数返回两个日期之间的天数。
datepart 参数值:(表1-1)
| datepart | 缩写 |
|---|---|
| 年 | yy, yyyy |
| 季度 | qq, q |
| 月 | mm, m |
| 年中的日 | dy, y |
| 日 | dd, d |
| 周 | wk, ww |
| 星期 | dw, w |
| 小时 | hh |
| 分钟 | mi, n |
| 秒 | ss, s |
| 毫秒 | ms |
| 微妙 | mcs |
| 纳秒 | ns |
例如:
SELECT DATEDIFF(dd,'2012-5-17','2012-5-18') AS DiffDate
结果:
| DiffDate |
|---|
| 1 |
(二)、本周
select * from mytable where DATEPART(wk, mydate)==DATEPART(wk,GETDATE()) and -- 周时间相等 DATEPART(yy, mydate) = DATEPART(yy, GETDATE()) -- 年时间相等
语法:DATEDIFF(datepart,date)
意义:DATEPART() 函数用于返回日期/时间的单独部分,比如年、月、日、小时、分钟等等。
datepart 参数值:见表(1-1)。
(三)、本月
select * from mytable where DATEPART(mm, mydate)==DATEPART(mm,GETDATE()) and -- 月时间相等 DATEPART(yy, mydate) = DATEPART(yy, GETDATE()) -- 年时间相等
语法:DATEDIFF(datepart,date)
意义:DATEPART() 函数用于返回日期/时间的单独部分,比如年、月、日、小时、分钟等等。
datepart 参数值:见表(1-1)。
...其它如上语法。

浙公网安备 33010602011771号