1

これが私のクエリです-SAPクエリツールで作成されました:

SELECT DISTINCT 
   T1.CardCode, 
   T1.CardName, 
   T1.Phone1, 
   T1.GroupCode, 
   T1.Territory,
   T2.Street, 
   T2.Block, 
   T2.City, 
   T2.ZipCode, 
   T2.County, 
   T2.State, 
   T2.Country,
   count(distinct(T3.DocEntry)) as NumberOfInvoices,
   sum(distinct(T4.GTotal)) as InvoiceTotal
FROM 
    [ASAP].[dbo].[OCRD] as T1
    INNER JOIN  [ASAP].[dbo].[CRD1] as T2 ON T1.CardCode = T2.CardCode
    INNER JOIN  [ASAP].[dbo].[OINV] as T3 on T1.CardCode = T3.CardCode
    INNER JOIN  [ASAP].[dbo].[INV1] as T4 on T3.DocEntry = T4.DocEntry
WHERE 
    T1.Territory = [%0] 
    AND T3.DocDate >= [%1] 
    AND T3.DocDate <= [%2] 
GROUP BY 
    T1.CardCode,
    T1.CardName, 
    T1.Phone1, 
    T1.GroupCode,
    T1.Territory,
    T2.Street,
    T2.Block, 
    T2.City, 
    T2.ZipCode, 
    T2.County, 
    T2.State, 
    T2.Country

これは私が受け取ったエラーです - Group By にフィールドがあることがはっきりとわかります。

  • [Microsoft][SQL Native Client][SQL Server]列 'ASAP.dbo.OCRD.Territory' は、集計関数にも GROUP BY 句にも含まれていないため、選択リストでは無効です。
  • [Microsoft][SQL Native Client][SQL Server]Statement 'Serv

お知らせ下さい

4

1 に答える 1

2

削除しDistinctます。すでにグループ化しているので、それは必要ありません。エラーが修正されるかどうかはわかりません。

また、 ordistinctの中に入れたくないのではないかと強く思っています。異なるものだけでなく、すべての請求書の合計を合計したいですか? 現在の構文では、合計額が同じ 2 つの異なる請求書がある場合、1 つがスキップされます。count()sum()

編集:ユーザーからすでに地域を渡している場合クエリでそれを選択する必要があるのはなぜですか? 事後、UI に再度追加するか、次の操作を行います。

SELECT ..., [%0] AS Territory, ...

フィールドを使用する代わりに。

于 2011-08-23T21:03:06.310 に答える