這個SQL語句如何寫? |
答題得分者是:Fishman
|
dengguo
一般會員 發表:41 回覆:49 積分:23 註冊:2004-01-09 發送簡訊給我 |
use test
GO create table ck_pd(wlbh varchar(20),pdsl decimal,zt varchar(10)) create table ck_cc(wlbh varchar(20),wlmc varchar(20),wlms varchar(50),zt varchar(10),ccsl decimal) insert into ck_pd select '100001',300,'良品'
union select '100001',230,'不良品'
union select '100002',3100,'不良品'
union select '100003',1230,'良品'
union select '100004',2130,'不良品'
union select '100004',2310,'良品'
union select '100005',2301,'良品'
union select '100006',3230,'不良品' insert into ck_cc select '100001','刀棒','100*300*2.5六角','良品',500
union select '100001','刀棒','100*300*2.5六角','不良品',1000
union select '100002','刀片','刀片100*2','良品',2300
union select '100003','面蓋','ABS塑膠','良品',100
union select '100004','底蓋','ABS塑膠','良品',20
union select '100005','帖紙','QC標帖','良品',450
union select '100005','帖紙','QC標帖','不良品',300
union select '100006','扎帶','耗材','良品',100 想要得到如下結果: wlbh wlmc wlms zt pdsl ccsl
100001 刀棒 100*300*2.5六角 良品 300 500
100001 刀棒 100*300*2.5六角 不良品 230 1000
100002 刀片 刀片100*2 不良品 3100 0
100003 面蓋 ABS塑膠 良品 1230 100
100004 底蓋 ABS塑膠 良品 2130 20
100004 底蓋 ABS塑膠 不良品 2310 0
100005 帖紙 QC標帖 良品 2301 450
100006 扎帶 耗材 不良品 3230 0
------------------------------------------------------------------
ck_cc中一定有良品,但不一定有不良品
也就是說取出CK_PD中所有項,然後取出CK_CC中的WLMC,WLMS,CCSL項
如果CK_PD中的ZT爲不良品且CK_CC中該ZT沒有該項時,取出CK_CC中的相應WLBH的WLMC,WLMS然後將CCSL設定爲0 ###############################
初學delphi,請各位多多提點!謝謝!
###############################
|
pcboy
版主 發表:177 回覆:1838 積分:1463 註冊:2004-01-13 發送簡訊給我 |
SELECT wlbh,wlmc,wlms,zt,pdsl,ccsl FROM ck_pd, ck_cc WHERE ck_pd.wlbh= ck_cc.wlbh AND ck_pd.zt= ck_cc.zt 或 SELECT ck_cc.wlbh, ck_cc.wlmc, ck_cc.wlms, ck_cc.zt, ck_pd.pdsl, ck_cc.ccsl FROM ck_pd, ck_cc WHERE ck_pd.wlbh= ck_cc.wlbh AND ck_pd.zt= ck_cc.zt
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案! 子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問! |
dengguo
一般會員 發表:41 回覆:49 積分:23 註冊:2004-01-09 發送簡訊給我 |
TO:pcboy2
你的語句不行啊,我之前就是這樣寫的,但結果是這樣的
wlbh wlmc wlms zt pdsl ccsl
-------------------- -------------------- --------------------
100001 刀棒 100*300*2.5六角 不良品 230 1000
100001 刀棒 100*300*2.5六角 良品 300 500
100003 面盖 ABS塑胶 良品 1230 100
100004 底盖 ABS塑胶 良品 2310 20
100005 帖纸 QC标帖 良品 2301 450 (所影响的行数为 5 行) ###############################
初學delphi,請各位多多提點!謝謝!
###############################
|
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi dengguo, Try this one, hope helpful to you !!
select pd.wlbh, cc.wlmc, cc.wlms, pd.zt, pd.pdsl, cc.ccsl from ck_pd pd, ck_cc cc where pd.wlbh = cc.wlbh and pd.zt = cc.zt union all select pd.wlbh, cc.wlmc, cc.wlms, pd.zt, pd.pdsl, 0 as ccsl from ck_pd pd, ck_cc cc where pd.wlbh = cc.wlbh and cc.zt = '良品' and not exists (select * from ck_cc c where c.wlbh = pd.wlbh and c.zt = pd.zt) order by 1---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |