如果您想保留當前架構(混合'x'非空狀態和'y'非狀態字段) (AFAIS現在)只使用IIF
選項:
Select MyNonStatusField1, /* other non-status fields here */
IIF([BField1], "BField1",
IIF([BField2], "BField2",
...
IIF([BFieldLast], "BFieldLast", "#No Flag#")
))))) -- put as many parenthesis as it needs to close the imbricated IIFs
From
MyTable
當然,你可以添加你喜歡的任何Where
條款。
編輯: 或者您可以使用下面的技巧: 設置字段null
在標誌爲false
,並把訂單號(IOW,「1」爲BField1,「2」爲BField2等。 )當國旗是true
。確保狀態字段是字符串(即在SQL術語Varchar(2)
,或者更好,Char(2)
)
然後你可以使用COALESCE功能,以返回來自這將是指數的狀態字段中的第一個非數值數字作爲字符串。然後你可以在這個字符串前添加你喜歡的任何文本(例如「BField」)。然後你會以類似的東西結束:
Select "BField" || Coalesce(BField1, BField2, BField3, BField4) /*etc. (add as many fields you like) */
From MyTable
更清晰的恕我直言。
HTH
謝謝,似乎是一個很好的解決方案! – 2010-05-08 10:43:27
這個版本的MS Access可以使用嗎? – Fionnuala 2010-05-08 12:19:26
它與Access 2003版本的MDB一起工作,但我遇到了一個小問題,請參閱 http:// stackoverflow。com/questions/2793980/parameter-xxx-has-no-default-value-error-when-order-by-in-sql-statement – 2010-05-08 12:32:06