1

概要; 一部のテーブルを結合すると、一部の列で同様の結果が得られます。それらをグループ化して max(column) を選択するにはどうすればよいですか。

私の質問は;

SELECT DISTINCT TOP (1000) LG_070_ITEMS.CODE AS PRODCODE,
                LG_070_01_SERILOTN.CODE AS CODE,
                LG_070_01_SLTRANS.OUTCOST,
                LG_070_01_SLTRANS.LOGICALREF AS LREF,
                LG_070_01_SLTRANS.INSLTRANSREF,
                LG_070_01_SLTRANS.INVENNO,
                LG_070_01_SLTRANS.INTRANSREF,
                LG_070_01_SLTRANS.STTRANSREF
FROM LG_070_01_SERILOTN
INNER JOIN LG_070_01_SLTRANS ON LG_070_01_SLTRANS.SLREF = LG_070_01_SERILOTN.LOGICALREF
INNER JOIN LG_070_ITEMS ON LG_070_ITEMS.LOGICALREF = LG_070_01_SERILOTN.ITEMREF
WHERE [TIGERDB].[dbo].[LG_070_01_SERILOTN].CODE = '868328002749220'

また、データベースからの回答は次のとおりです。

Prodcode コード---------------COST--LREF ------one twho three four

K-3773 868328002749220 50,85 46255------- 0 10 0 33584

K-3773 868328002749220 50,85 46504------- 46255 10 33584 33639

K-3773 868328002749220 50,85 46524------- 46504 11 33639 33640

K-3773 868328002749220 50,85 51273------- 46524 11 33640 38581

K-3773 868328002749220 50,85 51285------- 51273 9 38581 38587

K-3773 868328002749220 50,85 52275------- 51273 11 38581 39823

K-3773 868328002749220 50,85 52276------- 52275 9 39823 39824

そして今、私の問題は、どうすれば最後の行を選択できるかということです。これは、LREF 列または列 1 より大きくなる可能性があります。

私のクエリは同じです。状況と結果がこれと同じである場所で数値を使用しています。

max(columname) を group by othercolumns などで使用しようとしました。Microsoft SQL サーバー管理ツールでクエリ デザイナーを使用しました。

その 3 つのテーブルでは、選択されていない列は私にとって重要ではありません。

4

1 に答える 1

0

クエリ (おそらく高価になります):

SELECT DISTINCT TOP (1000) t3.CODE AS PRODCODE,
                t.CODE AS CODE,
                t2.OUTCOST,
                t2.LOGICALREF AS LREF,
                t2.INSLTRANSREF,
                t2.INVENNO,
                t2.INTRANSREF,
                t2.STTRANSREF
FROM LG_070_01_SERILOTN t
INNER JOIN LG_070_01_SLTRANS t2 ON t2.SLREF = t.LOGICALREF
INNER JOIN LG_070_ITEMS t3 ON t3.LOGICALREF = t.ITEMREF
WHERE t.CODE = '868328002749220'
AND t2.LOGICALREF = (SELECT MAX(tt2.LOGICALREF)
                         FROM LG_070_01_SERILOTN tt
                         INNER JOIN LG_070_01_SLTRANS tt2 
                          ON tt2.SLREF = tt.LOGICALREF
                         INNER JOIN LG_070_ITEMS tt3 
                          ON tt3.LOGICALREF = tt.ITEMREF
                          WHERE tt.CODE = t.CODE)

クエリの例SQLFIDDLEExample :

SELECT DISTINCT TOP (1000) t.*
FROM Table1 t
WHERE t.LREF = (SELECT MAX(tt.LREF)
                FROM Table1 tt
                WHERE tt.CODE = t.CODE)

結果:

| PRODCODE |            CODE |  COST |  LREF |   ONE | TWHO | THREE |  FOUR |
-----------------------------------------------------------------------------
|   K-3773 | 868328002749220 | 50,85 | 52276 | 52275 |    9 | 39823 | 39824 |
于 2013-03-28T20:21:08.137 に答える