美文网首页
sql server 技巧

sql server 技巧

作者: 吉凶以情迁 | 来源:发表于2022-11-12 11:25 被阅读0次

    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
    

    相关文章

      网友评论

          本文标题:sql server 技巧

          本文链接:https://www.haomeiwen.com/subject/ptzxxdtx.html