グループ化されたクエリ内の ID のカウントに問題があります。問題は、このクエリが別の変数に従ってグループ化されていることです。たとえば、請求書内で注文された製品の数を数える必要がありますが、この請求書は複数の請求書を作成した会社の内部にあります。明確だったと思います。とにかく、このSQLですべてがより明確になることを願っています:
SELECT C.FULLNAME,C.COMPANY_ID,SUM(I.GROSSTOTAL) AS TOTAL,
SUM(I.OTHER_MONEY_VALUE/1.18) AS OTHER_TOTAL,
COUNT(IR.PRODUCT_ID) AS NO_PRODUCTS
FROM COMPANY C
JOIN #DSN2_ALIAS#.INVOICE I ON C.COMPANY_ID=I.COMPANY_ID
JOIN #DSN2_ALIAS#.INVOICE_ROW IR ON I.INVOICE_ID=IR.INVOICE_ID
JOIN #DSN3_ALIAS#.PRODUCT P ON P.PRODUCT_ID=IR.PRODUCT_ID
JOIN #DSN3_ALIAS#.PRODUCT_CAT PC ON P.PRODUCT_CATID=PC.PRODUCT_CATID
WHERE P.PRODUCT_ID=<cfqueryparam value="#attributes.product_id#" cfsqltype="cf_sql_integer">
GROUP BY C.COMPANY_ID,C.FULLNAME
ORDER BY TOTAL DESC
製品 ID を定義した後、クエリは会社のリストと売上の合計を出力にリストし、NO_PRODUCTS は請求書の数と同じ値を持ちます。これは、クエリが company_id とフルネームでグループ化されているためです。各請求書の内部には複数の製品があるため、変数 no_products が間違って定義されています:(
どうすればカウントを正しく取得できますか?