2

従業員ごとに取得、使用、および残した休暇時間を取得するクエリがあります。それ以来、「Gain」の ALike ステートメントを変更して「Anniversary」を検索し、値を返します。Iif の失敗ステートメントに 0 が返されるようになりました。これがSQLです。

SELECT 
       SchedulingLog.UserID, 
       SchedulingLog.Category, 
       Sum(IIf([CatDetail] ALike 'Anniversary*',[Value],0)) AS Gain, 
       Sum(IIf(CatDetail ALike '%Used',[Value],0)) AS Used, [Gain]+[Used] AS [Left]
FROM SchedulingLog
GROUP BY SchedulingLog.UserID, SchedulingLog.Category
HAVING (((SchedulingLog.Category) Like "Vac*"));
4

3 に答える 3

2

Alike を使用している場合は、Jet のデフォルト (*) の代わりに ANSI ワイルドカード (%) を使用します。

そう

WHERE FieldName Like 'Something*'

だろう

WHERE FieldName ALike 'Something%'
于 2012-12-18T17:13:15.573 に答える
1

いくつかのこと。「Anniversary%」と「Vac%」が必要だと思いますが、like 関数と alike 関数を使用することをお勧めします。アクセスは ADO 接続を介して同様にサポートすることを読んだことがありますが、私が見つけることができる文書化されていません。

CatDetail にソース テーブルの 'AnniversaryXXXXX' 形式のデータが含まれていることを確認します。列が常に 'Anniversary' で始まらない場合は、'%Anniversary%' に変更する必要がある場合があります。

于 2012-12-18T17:09:49.597 に答える
1

標準の ANSI SQL セットアップを使用して、MS Access で純粋に作業していますが、正しいですか? その場合、ALike で物事を複雑にする必要はありません。Like と標準のワイルドカード * を使用するだけです。

于 2012-12-18T17:29:38.293 に答える