str(xxx/60,10,2)
保留2位小数
cast( (case xx when '' then '0' else str(xx) end) as decimal(18, 5))
解决为0 问题。
强制为空的显示
(case isnull(c.res,'') when '' then '未核对' else c.res end) 核对
选中一个语句可以单独执行指定语句。。
变量设置方便测试
DECLARE @aaa varchar(50)
set @aaa= 'xxxx'
select 0 xxtable,* from xxx where myxx in(@aaa)
变量控制执行
DECLARE @EXECUPDATE int
set @EXECUPDATE=1
IF( @EXECUPDATE =1 )
select '执行更新'
BEGIN
update xxx set xxx=1
END
inner join 等于 ==用法, left join 显示左边 right join 显示右边有的左边则为空
多表查询
--先查询1列方便观看。
SELECT TOP 1 * FROM A
SELECT TOP 1 * FROM B
SELECT TOP 1 * FROM C order by RecDate
SELECT TOP 1 * FROM D
select top 100 *
from A inner join B
on A.PartNo=B.PartNo
inner join C c.MinPackMtNo=B.MinPackMtNo
inner join D ON c.OpType=d.OpTypewhere c.MinPackMtNo='XXX'
order by C.RecDate desc
抓取执行
此方法过于强大可以用于逆向软件工程
任何执行记录都会被抓到
image.png
有时候和同事交流太累可以直接让实施跑起来我这边逆向分析也是不错的方法
多表查询 去重
如果是多列相同可以使用distinct 或者group by
其中group by所需要包含的字段在select中也要有。
在项目开发中实际上select的所有列代表所需要展示的列,通常也需要select 时间,如果时间列,不相同此时需要用其他手段去重。
如下图中 ,因为BBB表多条相同记录但是时间不一样,这时候根据id取出最大的,name为代表a b表都有的,而且在BBB表有多条重复的数据 ,
SELECT name,distinct STATIO ,c.RecDate
FROM AAAA s
left join BBBB c on s.REEL_NO = c.sn and c.res != 'NG'
and ID IN(SELECT max(ID) FROM BBBB GROUP BY name)
where s.WO_SEQUENCE = '{WO_SEQUENCE}' ORDER BY c.RecDate
网友评论