0

SQL Server 2005 を使用し、Web Developer 2010 でクエリを実行しています。min 関数が複数の値を返しているようです (返された ID ごとに、以下を参照)。理想的には、IDごとに1つを返すだけにしたいと思います。

SELECT     Production.WorksOrderOperations.WorksOrderNumber,
           MIN(Production.WorksOrderOperations.OperationNumber) AS Expr1, 
           Production.Resources.ResourceCode,
           Production.Resources.ResourceDescription,
           Production.WorksOrderExcel_ExcelExport_View.PartNumber,
           Production.WorksOrderOperations.PlannedQuantity,
           Production.WorksOrderOperations.PlannedSetTime, 
           Production.WorksOrderOperations.PlannedRunTime
FROM       Production.WorksOrderOperations
INNER JOIN Production.Resources
           ON Production.WorksOrderOperations.ResourceID = Production.Resources.ResourceID
INNER JOIN Production.WorksOrderExcel_ExcelExport_View
           ON Production.WorksOrderOperations.WorksOrderNumber = Production.WorksOrderExcel_ExcelExport_View.WorksOrderNumber
WHERE      Production.WorksOrderOperations.WorksOrderNumber IN
             ( SELECT   WorksOrderNumber
               FROM     Production.WorksOrderExcel_ExcelExport_View AS WorksOrderExcel_ExcelExport_View_1
               WHERE    (WorksOrderSuffixStatus = 'Proposed'))
           AND Production.Resources.ResourceCode IN ('1303', '1604')
GROUP BY   Production.WorksOrderOperations.WorksOrderNumber,
           Production.Resources.ResourceCode,
           Production.Resources.ResourceDescription,
           Production.WorksOrderExcel_ExcelExport_View.PartNumber,
           Production.WorksOrderOperations.PlannedQuantity,
           Production.WorksOrderOperations.PlannedSetTime,
           Production.WorksOrderOperations.PlannedRunTime

理解できる場合は、サブクエリ内に WorksOrderNumber も含まれている複数のテーブルから特定の列を選択しています。その他の条件も多数あります。

結果セットはこのように見え、無関係なデータがぼやけています。

http://i.stack.imgur.com/5UFIp.png (画像を埋め込めません)。

この結果セットは毎日更新され、別のレコードで発生する可能性があるため、強調表示された行は存在しないはずです。明示的に除外することはできません。

OperationNumber を他の多数のデータ型にキャストして変換しようとしましたが、varchar 型は「30」ではなく「100」を返します。検索エンジンも検索してみましたが、誰も同じ問題を抱えているようには見えません。

私はテーブルを構造化していません (それらは恐ろしく正規化されています)。それらを再構築することはできません。

任意のアイデアをいただければ幸いです。

4

1 に答える 1

0

このMIN関数は、グループ内の最小値を返します。各 ID の最小値が必要な場合は、ID だけでグループを取得する必要があります。「ID」で Production.WorksOrderOperations.WorksOrderNumber を参照していると思います。

これを SQL の「テーブル」として追加できます。

(SELECT Production.WorksOrderOperations.WorksOrderNumber,
       MIN(Production.WorksOrderOperations.OperationNumber) 
  FROM Production.WorksOrderOperations
 GROUP BY  Production.WorksOrderOperations.WorksOrderNumber)
于 2012-11-09T10:00:40.213 に答える