我有两个几乎相同的查询在两个不同的表中基本相同的字段上运行。有效的第一个查询如下所示:
TRANSFORM Count(PA_20110126.Account) AS CountOfAccount
SELECT PA_20110126.BuildingSegment, PA_20110126.BuildingGroup
FROM PA_20110126
GROUP BY PA_20110126.BuildingSegment, PA_20110126.BuildingGroup
ORDER BY
Switch([PA_20110126].[BuildingSegment]='Residential',0,
[PA_20110126].[BuildingSegment]='Commercial',1,
[PA_20110126].[BuildingSegment]='Health',2,
[PA_20110126].[BuildingSegment]='Religious',3,
[PA_20110126].[BuildingSegment]='Other',4,
[PA_20110126].[BuildingSegment]='Government',5),
PA_20110126.BuildingGroup
PIVOT PA_20110126.[PA Status] In ('CURRENT ', 'DEFAULT ',
'SATISFIED ', 'NOT SATISFIED ');
下面的第二个查询将停止,并显示一条错误消息,指出ORDER BY子句与GROUP BY子句冲突。
TRANSFORM Count(d20110126.Account) AS CountOfAccount
SELECT d20110126.BCSegment, d20110126.BCGroup
FROM d20110126
GROUP BY d20110126.BCSegment, d20110126.BCGroup
ORDER BY
Switch([d20110126].[BCSegment]='Residential',0,
[d20110126].[BCSegment]='Commercial',1,
[d20110126].[BCSegment]='Health',2,
[d20110126].[BCSegment]='Religious',3,
[d20110126].[BCSegment]='Other',4,
[d20110126].[BCSegment]='Government',5),
d20110126.BCGroup
PIVOT d20110126.Borough;
第二个查询中导致冲突错误的原因是什么?
谢谢!
答案 0 :(得分:3)
正如您所说,查询基本相同,因此问题必然是由表结构或表数据的差异引起的。对于有问题的字段,它们看起来是相同的数据类型(因为您将它们都与同一组字符串进行比较),所以我猜测问题在于数据本身。
如果我不得不猜测我会说d20110126.BCSegment字段中的数据不等于'Residential','Commercial','Health','Religious','Other'或'Government'。如果是这种情况,则Switch语句将返回该特定记录的Null
。
修复将是:
Switch
语句中添加默认的“Else”(例如True, 6
),以便switch语句始终返回值。