0

グループ化されたクエリ内の 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 が間違って定義されています:(

どうすればカウントを正しく取得できますか?

4

2 に答える 2

0

内部クエリの実行を試みることができます。請求書で商品数を取得するため。これに似たもの。

SELECT C.FULLNAME,C.COMPANY_ID,SUM(I.GROSSTOTAL) AS TOTAL,
       SUM(I.OTHER_MONEY_VALUE/1.18) AS OTHER_TOTAL,NO_PRODUCTS
    FROM COMPANY C
    JOIN #DSN2_ALIAS#.INVOICE I ON C.COMPANY_ID=I.COMPANY_ID
    JOIN (select INVOICE_ID,count(PRODUCT_ID) as NO_PRODUCT from #DSN2_ALIAS#.INVOICE_ROW group by invoice_id) 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
于 2012-05-29T14:58:52.323 に答える
0

あなたが何をしようとしているのか理解できたと思います。理解できなかったらごめんなさい

SELECT FULLNAME,COMPANY_ID
FROM (
SELECT 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">
ORDER BY TOTAL DESC )
GROUP BY COMPANY_ID,FULLNAME
于 2012-05-29T15:03:02.737 に答える