0

私は次のように考えています。各日付の各PartNumに示されている合計を確認する必要があります。ただし、ビューは特定の日付のみを表示する誤ったデータセットを返します。誰かが私をまっすぐにすることができますか?

SELECT
    `archived_items`.`ArcPartNumber` AS `PartNum`,
    `archived_header`.`AhDeliveryDate` AS `DeliveryDate`,
    `archived_items`.`ArcTransactionNumber` AS `TransactionNumber`,
    sum(`archived_items`.`ArcOrdered`) AS `Ordered`,
    sum(`archived_items`.`ArcShipped`) AS `Shipped`,
    sum(`archived_items`.`ArcBackOrdered`) AS `BackOrdered`
FROM
    ( `archived_items`
        LEFT JOIN `archived_header` ON (
            (`archived_header`.`AhTransactionNumber` = `archived_items`.`ArcTransactionNumber`
        )))
WHERE
((`archived_items`.`ArcTransactionType` = 3)
    AND 
    (`archived_header`.`AhDeliveryDate` >= CURDATE()))
GROUP BY
`archived_items`.`ArcPartNumber`
`archived_header`.`AhDeliveryDate`,
ORDER BY
`archived_items`.`ArcPartNumber`,
`archived_header`.`AhDeliveryDate`
4

2 に答える 2

0

これを試して 。()あなたは必要のない場所でそれらをたくさん使います

 SELECT
       ar.`ArcPartNumber` AS `PartNum`,
       ah.`AhDeliveryDate` AS `DeliveryDate`,
       ar.`ArcTransactionNumber` AS `TransactionNumber`,
       sum(ar.`ArcOrdered`) AS `Ordered`,
       sum(ar.`ArcShipped`) AS `Shipped`,
       sum(ar.`ArcBackOrdered`) AS `BackOrdered`
 FROM   `archived_items` ar
 LEFT JOIN `archived_header` ah 
 ON    ah.`AhTransactionNumber` = ar.`ArcTransactionNumber`
 WHERE
       ar.`ArcTransactionType` = 3
 AND 
      ah.`AhDeliveryDate` >= CURDATE()   
 GROUP BY
       `PartNum`,
       `DeliveryDate`
 ORDER BY
       `PartNum`,
       `DeliveryDate`

//CURDATEすでに現在の日付の関数であるため、使用しないでください。私はそれをあなたのものに置き換えたah.AhDeliveryDateので、それらが同じフォーマットであることを確認してください

デモを見てください。問題なく動作します。

于 2013-01-03T00:31:37.597 に答える
0

あるべき列のうちの2つだけでグループ化しているように見えます。これがタイプミスなのか、問題の原因なのかわからない。代わりにこれを試してください

SELECT
    `archived_items`.`ArcPartNumber` AS `PartNum`,
    `archived_header`.`AhDeliveryDate` AS `DeliveryDate`,
    `archived_items`.`ArcTransactionNumber` AS `TransactionNumber`,
    sum(`archived_items`.`ArcOrdered`) AS `Ordered`,
    sum(`archived_items`.`ArcShipped`) AS `Shipped`,
    sum(`archived_items`.`ArcBackOrdered`) AS `BackOrdered`
FROM
    ( `archived_items`
        LEFT JOIN `archived_header` ON (
            (`archived_header`.`AhTransactionNumber` = `archived_items`.`ArcTransactionNumber`
        )))
WHERE
((`archived_items`.`ArcTransactionType` = 3)
    AND 
    (`archived_header`.`AhDeliveryDate` >= CURDATE()))
GROUP BY
`archived_items`.`ArcPartNumber`
`archived_header`.`AhDeliveryDate`,
`archived_items`.`ArcTransactionNumber`
ORDER BY
`archived_items`.`ArcPartNumber`,
`archived_header`.`AhDeliveryDate`
于 2013-01-03T01:22:31.000 に答える