SQL Server 2005 へのリンク テーブルで MS Access 2010 を使用します。リンク テーブルには 5 つの列があります。
PName - STRING
OName - STRING
FName - STRING
Readable - BOOLEAN
Editable - BOOLEAN
サンプルデータ:
PName FName readable editable
UK Case.First_Name 0 0
UK Case.Last_Name 0 0
UK Case.Middle_Initial 0 0
UK Case.Phone_Number 0 0
UK Case.Username -1 -1
USA Case.First_Name 0 0
USA Case.Last_Name 0 0
USA Case.Middle_Initial 0 0
USA Case.Phone_Number 0 0
USA Case.Username -1 -1
PName ごとにすべての FName のリストを返すが、読み取り可能な値がすべての PName で異なる場合、または編集可能な値がすべての PName で異なる場合にのみ FName を表示するクエリを作成しようとしています。
出力例:
UK USA
Edit|Read EDIT|Read
Case.First_Name T | T F | T
Case.UserName F | F F | T
上記の「Case.First_Name」は英国では編集可能ですが、米国では編集できないため、この行を表示したい理由があります
Case.UserName は英国では読み取り可能ではありませんが、米国では読み取り可能であるため、この行を表示したい理由
出力してはいけないもの:
UK USA
Edit|Read EDIT|Read
Case.First_Name T | T T | T
Case.UserName F | F F | F
上記の行は両方とも、英国と米国の両方で同一の読み取り可能性と編集可能性を持っているため、これらの行を表示したくありません。
以下のクエリは、必要な生データを取得し、ピボット テーブルに変換できます。
SELECT PName, FName, Readable, Editable
FROM ProfileFLS
WHERE PName Like "U*";
これは、If ステートメントを使用して Excel にエクスポートされます。
プロファイルの数は動的であることに注意してください。
ご協力いただきありがとうございます
最新の SQL:
SQL is as follows, I have also tried changing the ="True" to 0
TRANSFORM Sum(IIf(dbo_ProfileFLS.readable="TRUE","Read_True","Read_False")) AS Readable
SELECT dbo_ProfileFLS.fieldname
FROM dbo_ProfileFLS
WHERE (((dbo_ProfileFLS.objectname)="Case") AND ((dbo_ProfileFLS.Profile) Like "UK*"))
GROUP BY dbo_ProfileFLS.fieldname, dbo_ProfileFLS.readable
PIVOT dbo_ProfileFLS.Profile;