2011-02-03 93 views
0

我有兩個幾乎相同的查詢操作在兩個不同的表中基本相同的字段。第一個查詢,它的工作原理,看起來是這樣的:訪問2010 SQL - 分組/排序衝突

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; 

什麼導致第二個查詢中的衝突錯誤?

謝謝!

回答

3

正如你所說的查詢基本上是相同的,所以問題必須由表結構或表數據的差異引起。對於有問題的字段,它們看起來是相同的數據類型(因爲你將它們都比作同一組字符串),所以我猜測問題是數據本身。

如果我不得不猜測,我會說d20110126.BCSegment字段中的數據不等於「住宅」,「商業」,「健康」,「宗教」,「其他」或「政府」 。如果是這種情況,那麼Switch語句將爲該特定記錄返回Null

的解決將是兩種:

  1. 淨化你的數據(通過確保通過一些其他手段所有記錄了你正在檢查對五個值之一)
  2. 添加默認「否則'到您的Switch語句(例如,True, 6),以便switch語句總是返回一個值。
+0

謝謝你的洞察力。我確認了你的第一點(使用查詢和透視圖),但你的第二點不起作用 - 我仍然收到相同的錯誤消息。我認爲我的問題可能與表格大小有關,原因我還不明白。當我使用減少字段數量和記錄數量的查詢減少了所用數據集的大小(來自800,000多條記錄)時,查詢就起作用了。因此,我可以獲取數據集的子集,但不能查看整個數據集...還有什麼想法?謝謝。 – 2011-02-06 20:34:18