2017-03-06 7 views
0
SELECT a.UPC,COUNT(*) 
FROM StoreTransactions a WITH (NOLOCK) 
JOIN StoreTransactions_Expanded_UOM c 
ON a.StoreTransactionID = c.StoreTransactionID 
LEFT JOIN ProductCatalog cat 
ON a.ProductID = cat.ProductID 
LEFT JOIN ProductCatalogBase base 
ON cat.ProductCatalogID = base.ProductCatalogID 
JOIN ProductIdentifiers d 
ON cat.ProductID = d.ProductID AND d.ProductIdentifierTypeID = 2 

GROUP BY a.UPC 
, d.IdentifierValue, cat.PackDesc, a.ReportedCost, 
base.ManualHigh, base.ManualLow,cat.DateTimeCreated,cat.DateTimeLastUpdate 
ORDER BY count(*) desc 

UPCに対応するUPCの数をカウントしたいが、以下のように正しい結果が得られない。対応する項目数が表示されます。

UPC    Count 
071990316006 1463 
026565245455 4530 
+1

なぜあなたはすべてのこれらの列によってグループ化されていますか?あなたはa.UPCだけでグループ化するべきです。なぜNOLOCKですか? http://blogs.sqlsentry.com/aaronbertrand/bad-habits-nolock-everywhere/ –

+0

@SeanLangeと同意します。あなたが 'UPC'の数だけを望むならば、' Group By a.UPC'だけです。 'Group By'の他の列を削除してください。 –

+0

また、LEFT JOIN ProductCatalog cat'というテーブルで 'JOIN ProductIdentifiers'を実行します。これはあなたに不確定な結果を与える可能性があります。 –

答えて

0

あなただけa.UPCによってグループに必要があります。

SELECT a.UPC,COUNT(*) 
FROM StoreTransactions a WITH (NOLOCK) 
JOIN StoreTransactions_Expanded_UOM c 
ON a.StoreTransactionID = c.StoreTransactionID 
LEFT JOIN ProductCatalog cat 
ON a.ProductID = cat.ProductID 
LEFT JOIN ProductCatalogBase base 
ON cat.ProductCatalogID = base.ProductCatalogID 
JOIN ProductIdentifiers d 
ON cat.ProductID = d.ProductID AND d.ProductIdentifierTypeID = 2 
GROUP BY a.UPC 
ORDER BY count(*) desc 
関連する問題