2011-07-07 20 views
1

こんにちはいずれかが、このエラーメッセージが表示できます私のクエリSQL Serverのクエリ構文の問題

SELECT  
    cDispatcherName AS Name, 
    cCallNature AS EmergencyCall, 
    COUNT(cCallNature) AS Total, 
    (
     SELECT 
      COUNT(cCallNature) 
      FROM CallInfo 
      WHERE (cCallNature ='Regular call') 
     GROUP BY cCallNature 
    ) AS Expr1 
FROM   CallInfo 
WHERE  (cCallNature = 'Emergency call') 
GROUP BY cDispatcherName, cCallNature 

と間違っているものを私に説明することができます:私はこのクエリは、より良いで書くことができると思います

Errormsg::There was an error parsing the query. [ Token line number = 1,Token line offset = 93,Token in error = SELECT ]

+1

エラーメッセージが表示されますか? –

+0

有効な構文と思われます。何が問題ですか? –

+0

はい。My querySELECT cDispatcherName AS名、cCallNature AS EmergencyCall、COUNT(cCallNature)AS合計、(SELECT COUNT(cCallNature)FROM CallInfo WHERE cCallNature = '通常のコール' GROUP BY cCallNature from Callinfo)AS Expr1 FROM CallInfo WHERE(cCallNature = '緊急コール ')GROUP BY cDispatcherName、cCallNature Errormsg ::クエリの解析中にエラーが発生しました。 [トークン行番号= 1、トークン行オフセット= 93、トークン内のエラー= SELECT] Sqlserverce Compactedtionを処理しています – Ram

答えて

0

を私はあなたが(DispatcherName)を指定しなかった副問い合わせに大きな問題を見ることができます。

だから、元から何あなたの後

SELECT  
    cDispatcherName AS Name, 
    COUNT(cCallNature) AS EmergencyCallTotal, 
    (
     SELECT 
      COUNT(cCallNature) 
      FROM CallInfo rcall 
      WHERE (cCallNature ='Regular call' and rcall.cDispatcherName =CallInfo.CallInfo) 
    ) AS RegularcallTotal 
FROM   CallInfo 
WHERE  (cCallNature = 'Emergency call') 
GROUP BY cDispatcherName 
+0

申し訳ありませんまだ動作していません – Ram

1

その完全には明らかではない。また、すべてのクエリを変更することができます(ただし、これはあなたのニーズによって異なります)、次の

(
     SELECT 
      COUNT(cCallNature) 
      FROM CallInfo rcall 
      WHERE (cCallNature ='Regular call' and rcall.cDispatcherName =CallInfo.CallInfo) 

    ) AS Expr1 

としてサブクエリを変更クエリではなく、(スカラー値ではなく)セットを返さないかぎり、代わりにSQL-CEでネストされた選択を使用することはできません。

SELECT  
     CallInfo.cDispatcherName AS Name, 
     cCallNature AS EmergencyCall, 
     COUNT(cCallNature) AS Total, 
     SUB.CNT AS RegularCalls 
    FROM CallInfo 
    LEFT JOIN (
     SELECT 
      cDispatcherName, 
      COUNT(*) AS CNT 
     FROM CallInfo 
     WHERE cCallNature ='Regular call' 
     GROUP BY cDispatcherName 
    ) AS SUB ON CallInfo.cDispatcherName = SUB.cDispatcherName 

    WHERE cCallNature = 'Emergency call' 
    GROUP BY CallInfo.cDispatcherName, CallInfo.cCallNature, SUB.CNT 
+0

Thanx非常に私のために働いています – Ram