1

Deliverys、IssedWarehouse、ReturnedStock の 3 つのテーブルがあります。

Deliveries: ID, OrderNumber, Material, Width, Gauge, DelKG
IssuedWarehouse: OrderNumber, IssuedKG
ReturnedStock: OrderNumber, IssuedKG

私がやりたいのは、すべての注文を素材、幅、およびゲージでグループ化し、配送された量、倉庫に出された量、および在庫に戻された量を合計することです。

これは、実際に非常に近い SQL です。

SELECT 
    DELIVERIES.Material, 
    DELIVERIES.Width, 
    DELIVERIES.Gauge, 
    Count(DELIVERIES.OrderNo) AS [Orders Placed],
    Sum(DELIVERIES.DeldQtyKilos) AS [KG Delivered], 
    Sum(IssuedWarehouse.[Qty Issued]) AS [Film Issued], 
    Sum([Film Retns].[Qty Issued]) AS [Film Returned],
    [KG Delivered]-[Film Issued]+[Film Returned] AS [Qty Remaining]

FROM (DELIVERIES 
INNER JOIN IssuedWarehouse
    ON DELIVERIES.OrderNo = IssuedWarehouse.[Order No From]) 
INNER JOIN [Film Retns] 
    ON DELIVERIES.OrderNo = [Film Retns].[Order No From]
GROUP BY Material, Width, Gauge, ActDelDate
HAVING ActDelDate Between [start date] And [end date]
ORDER BY DELIVERIES.Material;

これにより、製品がほぼ完全にグループ化されます。ただし、結果を見ると、次のようになります。

Material    Width   Gauge   Orders Placed   Delivered Qnty Kilos    Film Issued Film Returned   Qty Remaining
COEX-GLOSS  590     75      1               534                     500         124             158
COEX-MATT   1080    80      1               4226                    4226        52              52
CPP         660     38      8               6720                    2768        1384            5336
CPP         666     47      1               5677                    5716        536             497
CPP         690     65      2               1232                    717         202             717
CPP         760     38      3               3444                    1318        510             2636
CPP         770     38      4               4316                    3318        2592            3590
CPP         786     38      2               672                     442         212             442
CPP         800     47      1               1122                    1122        116             116
CPP         810     47      1               1127                    1134        69              62
CPP         810     47      2               2250                    1285        320             1285
CPP         1460    38      12              6540                    4704        2442            4278
LD          975     75      1               502                     502         182             182
LDPE        450     50      1               252                     252         50              50
LDPE        520     70      1               250                     250         95              95
LDPE        570     65      2               504                     295         86              295
LDPE        570     65      2               508                     278         48              278
LDPE        620     50      1               252                     252         67              67
LDPE        660     50      1               256                     256         62              62
LDPE        670     75      1               248                     248         80              80
LDPE        690     47      1               476                     476         390             390
LDPE        790     38      2               2104                    1122        140             1122
LDPE        790     50      1               286                     286         134             134
LDPE        790     50      1               250                     250         125             125
LDPE        810     30      1               4062                    4062        100             100
LDPE        843     33      1               408                     408         835             835
LDPE        850     80      1               412                     412         34              34
LDPE        855     30      1               740                     740         83              83
LDPE        880     60      1               304                     304         130             130
LDPE        900     70      2               1000                    650         500             850
LDPE        1017    60      1               1056                    1056        174             174
OPP         25      1100    1               381                     381         95              95
OPP         1000    30      2               1358                    1112        300             546
OPP         1000    30      1               1492                    1491        100             101
OPP         1200    20      1               418                     417         461             462
PET         760     12      3               1227                    1876        132             -517

幅とゲージが同じで、グループ化されていないマテリアルがいくつかあることがわかります。これは、注文ごとに配送数量が異なるためだと思います。例えば:

Material    Width   Gauge   Orders Placed   Delivered Qnty Kilos    Film Issued Film Returned   Qty Remaining
LDPE        620     50      1               252                     252         67               67
LDPE        660     50      1               256                     256         62               62

この 2 つの行をグループ化したいと思います。素材、幅、ゲージは同じですが、納品数量が異なるため、グループ化していません。

これらの奇妙な行をグループ化するのを手伝ってくれる人はいますか?

4

2 に答える 2

1

あなたの「問題」は、配達が異なる日付に発生しActDelDate、データが分割されるようにグループ化していることですが、列を選択していないためActDelDate、これは明らかではありません.

修正方法: group by リストから削除するActDelDate


また、最初の結合を囲む不要な括弧を削除し、変更する必要があります

HAVING ActDelDate Between [start date] And [end date]

WHERE ActDelDate Between [start date] And [end date]

そしてそれをに持ってくださいGROUP BY

于 2012-06-13T14:06:24.360 に答える
0

配送日でグループ化しているため、行が分割されています。結果から配達日を省略してグループ化するか、配達日の最小/最大を取得します。

于 2012-06-13T13:43:00.967 に答える