郑州深度软件科技有限公司

价值SQL

1、获取 药天下格式的系统日期

CONVERT(varchar(100), GETDATE(), 23)

如:SELECT * FROM cb_hs WHERE (期初日期 = SUBSTRING(CONVERT(varchar(100), GETDATE(), 23), 1, 8) + '01')

2、解决导入的商品档案不能在列表显示问题(原因是flag字段为 null 了)

UPDATE spda SET FLAG = '' WHERE (FLAG IS NULL)

3、重新生成助记码

UPDATE spda SET 助记码 = dbo.fun_getPY(NAME)

4、使用复核助记码

UPDATE spda SET 助记码 = dbo.fun_getPY(NAME) + ' ' + dbo.fun_getPY(厂牌)

5、用格式单号查找原单

SELECT * FROM pz_cmmn where substring(日期,3,2) + substring(日期,6,2)+ ltrim(str(单号))='15051'

6、删除从来未发生业务的档案

DELETE FROM spda WHERE (NOT EXISTS (SELECT 1 FROM pz_jz WHERE substring(spda.code, 3, 20) = pz_jz.商品编码)) and flag<>'->'

DELETE FROM kh_tab WHERE (NOT EXISTS (SELECT 1 FROM pz_jz WHERE substring(kh_tab.code, 3, 20) = pz_jz.客户)) and flag<>'->'

7、启用新功能“价格跟踪”时,把历史的售价关联出来的方法

alter table pz_jz add [id] [int] IDENTITY (1, 1) NOT NULL

Select *   into wwww from pz_jz a where not exists(select 1 from pz_jz where 商品编码=a.商品编码   and 客户=a.客户  and id>a.id)

alter table pz_jz drop column [id]

insert into 客户最新售价 select  客户,商品编码,成交价,日期  from wwww

where 出库数量>0  and 客户 is not null and 客户 <>'' and 客户<>'0403' and 客户<>'全部盘点'

drop table wwww

8、把ID写的首营表(药天下老版本在首营载入时没把编码写到首营里面,可以用下面的语句处理)

update 首营企业审批  set 企业编码=substring(kh_tab.code,3,20) from kh_tab where 首营企业审批.企业名称=kH_tab.name  and   substring(kh_tab.code,3,1)='1'

update 合格销方登记  set 企业编码=substring(kh_tab。code,3,20) from kh_tab

where  合格销方登记。企业名称=kH_tab。name  and   substring(kh_tab。code,3,1)='2'

9、启用采购员独立核算后,客户编码关联客户名称的方法,核心语法 SUBSTRING(a。客户, 0, CHARINDEX('_', a。客户+'_'))

select a。日期,a。业务单号,a。客户,b。name,a。本方货位,a。单据总额,a。级次,a。经办,a。制单签字,a。单号,a。业务编码,a。接口标志 as 打印,a。原日期 as 采购日期,a。原单号 as 采购单号 from pz_cmmn a left JOIN kh_tab b ON SUBSTRING(a。客户, 0, CHARINDEX('_', a。客户+'_')) = SUBSTRING(b。CODE,3,20) where a。业务编码 like '010101%' and a。级次 = 4 and a。部门 like '0101%' and a。经办 like '%' and a。日期 >= '2014-12-20'and a。日期 <= '2014-12-30'order by 日期,业务单号

10、老版本没加主键,添加主键失败时,查找重复主键的方法

加个id行  alter table tb add id int identity(1,1)

SELECT p1。* FROM pz_jz p1 INNER JOIN pz_jz p2 ON p1。日期 = p2。日期 AND p1。单号 = p2。单号 AND p1。行号 = p2。行号 AND     p1。id <> p2。id

11、调出全部冷藏药记录的日期和单号

SELECT pz_jz。日期, pz_jz。业务单号, pz_jz。商品编码, pz_jz。品名, pz_jz。规格, spda。储存条件, pz_jz。业务类型

FROM pz_jz INNER JOIN spda ON pz_jz.商品编码 = SUBSTRING(spda.CODE, 3, 20) WHERE (spda.储存条件 = N'冷藏')

ORDER BY pz_jz.日期, pz_jz.业务单号

12、调出全部二类精神药品的销售

SELECT 日期, 业务单号, 商品编码, 品名, 出库数量, 业务类型 FROM pz_jz

WHERE (品名 LIKE N'%二类%') AND (业务类型 = N'销售出库') ORDER BY 日期

13、防止经办字段漏加默认值时,空关联不出来的问题,使用 isnull 函数处理

SELECT * FROM pz_cmmn WHERE (ISNULL(经办, '') LIKE '%')

14、修改批号调整表批号字段的长度 alter table ph_fs alter column 批号 varchar(30)

数据纠错:

一、入库时修改了验收的批号情况

SELECT gsp_cmmn。日期, gsp_cmmn。单号, pz_cmmn。原日期, pz_cmmn。原单号,

pz_jz.商品编码, pz_jz.批号, pz_jz.保质期, pz_jz.品名, sq_fs.商品编码 AS Expr1,

sq_fs。品名 AS Expr2, sq_fs。批号 AS 验收批号, sq_fs。有效期

FROM gsp_cmmn INNER JOIN pz_cmmn ON gsp_cmmn.日期 = pz_cmmn.原日期 AND

gsp_cmmn。业务单号 = pz_cmmn。原单号 INNER JOIN pz_jz ON pz_cmmn。单号 = pz_jz。单号 AND pz_cmmn。日期 = pz_jz。日期 INNER JOIN  sq_fs ON gsp_cmmn。日期 = sq_fs。日期 AND gsp_cmmn。单号 = sq_fs。单号 AND

sq_fs.数量 = pz_jz.入库数量 AND sq_fs.批号 <> pz_jz.批号 AND sq_fs.商品编码 = pz_jz.商品编码

二、有入库无采购验收记录

SELECT pz_jz。商品编码, pz_jz。品名, pz_jz。规格, sq_fs。商品编码 AS spbm,

sq_fs。品名 AS pm, pz_jz。日期, pz_jz。单号, pz_jz。行号, pz_jz。批号, pz_jz。保质期, pz_jz。业务单号

FROM pz_jz LEFT OUTER JOIN sq_fs ON pz_jz。商品编码 = sq_fs。商品编码 AND pz_jz。批号 = sq_fs。批号

WHERE (pz_jz.业务编码 = '010101') AND (sq_fs.品名 IS NULL)

ORDER BY sq_fs。品名

三、销售日期在入库前

SELECT * FROM pz_jz WHERE (业务编码 = N'020101') AND (日期 < 采购日期)