2

このクエリはまったくばかげているか、1 つだけ間違っている可能性があります。私はあまりよく分からない。しかし、基本的には、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);

どんな助けでも大歓迎です。それが不可能なら、私はばかだと言ってください。ありがとう!

4

1 に答える 1

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)

<...>

MS Access の YesNo は -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")

これは(-1)(RetailSpread="Yes")に評価されますTrue

于 2012-07-20T21:11:24.163 に答える