将 MS access 2010 与 SQL Server 2005 的链接表一起使用。链接表有 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 的 Readable 值不同或所有 PName 的 Editable 值不同时才显示 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*";
然后将其导出到 Excel 并使用 If 语句。
请注意,配置文件的数量是动态的。
谢谢你的帮助
最新的 SQL:
SQL如下,我也试过把="True"改成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;