2012-11-25 33 views
1

功能在Visual Studio 2008中使用SQL Server CE,我試圖查詢數據庫這樣的:T-SQL的錯誤與STUFF((SELECT ...)),在SQL Server CE

select   
    [INTESTAZIONE Ente], 
    [INTESTAZIONE Tipo], 
    [INTESTAZIONE Anno], 
    [INTESTAZIONE Protocollo], 
    COUNT([Mittenti Mittente]) AS [N.MITTENTI], 
    [Mittenti Mittente] AS [MITTENTI], 
    STUFF(
      (SELECT ',' + [Mittenti Mittente] AS [ELENCO MITTENTI] 
      FROM ElencoMittenti 
      WHERE [ElencoMittenti.[Mittenti Mittente]] = [Elenco_Ricorsi.[Mittenti Mittente]] 
      FOR XML PATH('')), 1, 1, '') AS [RISULTATO] 
from  
    Elenco_Ricorsi 
group by 
    [INTESTAZIONE Ente], [INTESTAZIONE Tipo],[INTESTAZIONE Anno], 
    [INTESTAZIONE Protocollo], [Mittenti Mittente] 

我需要STUFF((SELECT.....)命令來建立一個數組作爲這個查詢的結果。

這個查詢提供了一個錯誤:

token in error = SELECT" and the problem comes from the nested 'select'

我讀這可能與SQL Server Compact Edition還做的,所以我覺得我已在查詢的一些錯誤。引用表時

+0

做你的內部查詢單獨運行? – dotNETbeginner

+0

當然,如果我取消stuff()指令,其餘的查詢工作。 – pimeiami

+3

CE中支持XML數據類型嗎?使用'for xml path'構建XML的連接並不是什麼東西。 –

回答

2

你的括號只是在錯誤的地方,你需要環繞[表名]方括號[列名],我已經包括修改後的版本,應該工作:

 SELECT [INTESTAZIONE Ente] , 
     [INTESTAZIONE Tipo] , 
     [INTESTAZIONE Anno] , 
     [INTESTAZIONE Protocollo] , 
     COUNT([Mittenti Mittente]) AS [N.MITTENTI] , 
     [Mittenti Mittente] AS [MITTENTI] , 
     STUFF((SELECT ',' + [Mittenti Mittente] AS [ELENCO MITTENTI] 
       FROM ElencoMittenti 
       WHERE [ElencoMittenti].[Mittenti Mittente] = [Elenco_Ricorsi].[Mittenti Mittente] 
       FOR 
       XML PATH('') 
      ), 1, 1, '') AS [RISULTATO] 
FROM Elenco_Ricorsi 
GROUP BY [INTESTAZIONE Ente] , 
     [INTESTAZIONE Tipo] , 
     [INTESTAZIONE Anno] , 
     [INTESTAZIONE Protocollo] , 
     [Mittenti Mittente]