鄭州深度軟件科技有限公司

價值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 (日期 < 采購日期)