0

次のクエリを通じて、、、、および3つのものparEmailをマージしようとしていますparEmployeeLoginparStaffID

これで、1つがnullの場合、NameValue全体がnullになります。

SELECT (parFirstname +' '+ parSurname) AS NAME, 
  (parEmail +','+ parEmployeeLogin +','+ parStaffID) AS NameValue 
FROM [tblParticipants] 
where parFirstname Is Not Null 
ORDER BY parFirstname

NameValueには、3つのフィールドすべてにデータがある場合にのみデータが含まれ、NAMEが適切にフェッチされます。これを使用してAccessファイルからデータを取得しています。このoledbクエリでどのような変更を行う必要がありますか。

4

1 に答える 1

0

NULL+ なんでも = NULL. 句を使用することを防止partFirstNameしましたが、他の 2 つの列のいずれかが である場合、結果全体はです。NULLWHERENULLNULL

を使用して列のIIF代替値を提供するか、複数の列を処理するようにNULL変更する必要があります。(未テスト) 最初のオプションのクエリ (このマシンにはアクセス権がありません):WHERENULL

SELECT 
  partFirstName + ' ' + IIF(IsNull(parSurName), '<None>', parSurName) as Name,
  IIF(IsNull(parEMail), '<No Mail>', parEMail) + ', ' +
    IIF(IsNUll(parEmployeeLogin), '<No Login>', parEmployeeLogin) + ', ' +
    IIF(IsNull(parStaffID), '<No ID>', parStaffID) as NameValue
FROM 
  [tblParticipants]
WHERE 
  parFirstName IS NOT NULL
ORDER BY 
  parFirstname
于 2012-05-23T23:43:05.517 に答える