2012-07-20 75 views
2

此查詢可能絕對荒謬,或者我可能只有一件小事情出錯。我不太確定。但基本上我試圖用Access中另一個表中的數據更新表。給我提出問題的列是那些設置爲「是/否」類型的列,我試圖更新它的數據被設置爲「文本」類型,其值爲字符串「是」或「否」。如何使用條件來更新單獨表格中的數據表

因此,如果這個查詢甚至可能,我想到的大概是將其「文本」字段粗略地轉換爲1或0,具體取決於它們的「是」或「否」值。無論如何,足夠的背景,這裏的查詢:

UPDATE Group_Pricing SET 
Contract_Type = (SELECT Contract_Type FROM ContractTypesFinal WHERE ContractTypesFinal.FirstGroup = Group_Pricing.GroupID), 
Hybrid_Retail = 
(SELECT CASE (SELECT RetailSpread FROM ContractTypesFinal WHERE ContractTypesFinal.FirstGroup = Group_Pricing.GroupID) 
CASE "Yes" 
RetailSpread = 1 
CASE "No" 
RetailSpread = 0), 
Hybrid_Mail = 
(SELECT CASE (SELECT MailSpread FROM ContractTypesFinal WHERE ContractTypesFinal.FirstGroup = Group_Pricing.GroupID) 
CASE "Yes" 
MailSpread = 1 
CASE "No" 
MailSpread = 0), 
Hybrid_Specialty = 
(SELECT CASE (SELECT SpecialtySpread FROM ContractTypesFinal WHERE ContractTypesFinal.FirstGroup = Group_Pricing.GroupID) 
CASE "Yes" 
SpecialtySpread = 1 
CASE "No" 
SpecialtySpread = 0), 
Hybrid_Rebates = 
(SELECT CASE (SELECT Rebates FROM ContractTypesFinal WHERE ContractTypesFinal.FirstGroup = Group_Pricing.GroupID) 
CASE "Yes" 
Rebates = 1 
CASE "No" 
Rebates = 0) 
WHERE EXISTS (SELECT 1 FROM ContractTypesFinal WHERE ContractTypesFinal.FirstGroup = Group_Pricing.GroupID); 

任何幫助,非常感謝。如果這是不可能的,告訴我我是個白癡。謝謝!

回答

3

你不能在MS Access中有CASE,你可以有IIf。

UPDATE Group_Pricing SET 
Contract_Type = 
    (SELECT Contract_Type 
     FROM ContractTypesFinal 
     WHERE ContractTypesFinal.FirstGroup = Group_Pricing.GroupID), 
Hybrid_Retail = 
IIf (SELECT RetailSpread 
    FROM ContractTypesFinal 
    WHERE ContractTypesFinal.FirstGroup = Group_Pricing.GroupID)="Yes",1,0) 

<...> 

注意YESNO在MS Access是-1和0

這將是容易得多,然而,只是說:

UPDATE table1 SET AYesNo=(AText="Yes") 

編輯

UPDATE Group_Pricing 
INNER JOIN ContractTypesFinal 
ON Group_Pricing.GroupID = ContractTypesFinal.FirstGroup 
SET Hybrid_Retail = (RetailSpread="Yes") 

(RetailSpread="Yes")將評估爲True(-1)

+0

啊,是的。爲什麼我試圖使用VBA進行直接查詢,我不知道。謝謝你指出我朝着正確的方向。所以是= 1和否= 0? – Tim 2012-07-20 21:17:49

+0

是的,我錯過了。所以你說'更新Group_Pricing SET Hybrid_Retail =(((SELECT RetailSpread FROM ContractTypesFinal WHERE Con​​tractTypesFinal.FirstGroup = Group_Pricing.GroupID)=「Yes」)'?我的理解似乎不正確。 – Tim 2012-07-20 21:24:57

+0

當字段等於「否」時,這也會處理嗎? – Tim 2012-07-20 21:54:26

相關問題