0

(entrydate列の最大日)と(entrydate列の最大日-15日)の間のデータをフェッチしようとしています!!

表1:合計で953行あります ここに画像の説明を入力してください

表2:合計で400行あります ここに画像の説明を入力してください

このエラーが発生しました、助けてください!!

    Select  
o_material_transaction_inward.Mat_Code,
s_material_details.Mat_Spec,
s_material_details.Mat_Make,
o_material_transaction_inward.Sup_Name,
o_material_transaction_inward.Entry_Date,
o_material_transaction_inward.DC_qty,
o_material_transaction_inward.Received_qty,
    from 
o_material_transaction_inward 
    join 
s_material_details 
    on 
s_material_details.Mat_Code=o_material_transaction_inward.Mat_Code and s_material_details.Mat_Group_Id=o_material_transaction_inward.Mat_Group_id
    where 
o_material_transaction_inward.Entry_Date between Max(o_material_transaction_inward.Entry_Date) and Max(o_material_transaction_inward.Entry_Date - 15)
4

3 に答える 3

2

更新:BETWEEN述語を修正しました:

それが機能しなかった理由は、最小値が述部の最初の値である必要があるためです。したがって、最大エントリ日-15と最大エントリ日付BETWEENの間の2つのテーブルからこれらの行を取得するには、次のことを試してください。entry_date

SELECT
  o.Mat_Code,
  s.Mat_Spec,
  s.Mat_Make,
  o.Sup_Name,
  DATE_FORMAT(o.Entry_Date, '%Y-%m-%d') AS Entry_Date,
  o.DC_qty,
  o.Received_qty
FROM o_material_transaction_inward AS o
INNER JOIN s_material_details      AS s  ON s.Mat_Code     = o.Mat_Code
WHERE o.Entry_Date BETWEEN ((SELECT Max(Entry_Date) 
                            FROM o_material_transaction_inward) - 15)
                       AND (SELECT Max(Entry_Date) 
                            FROM o_material_transaction_inward) ;

SQLフィドルデモ

于 2013-02-05T12:46:06.050 に答える
0

これは機能するはずです:

SELECT
  o.Mat_Code,
  s.Mat_Spec,
  s.Mat_Make,
  o.Sup_Name,
  o.Entry_Date,
  o.DC_qty,
  o.Received_qty,
FROM o_material_transaction_inward AS o
INNER JOIN s_material_details      AS s  ON s.Mat_Code     = o.Mat_Code
                                        AND s.Mat_Group_Id = o.Mat_Group_id
WHERE o.Entry_Date BETWEEN (SELECT Max(Entry_Date) 
                            FROM o_material_transaction_inward) 
                       AND (SELECT Max(Entry_Date) 
                            FROM o_material_transaction_inward) - 15);
于 2013-02-05T12:58:39.713 に答える
0

試す:

    Select  
o_material_transaction_inward.Mat_Code,
s_material_details.Mat_Spec,
s_material_details.Mat_Make,
o_material_transaction_inward.Sup_Name,
o_material_transaction_inward.Entry_Date,
o_material_transaction_inward.DC_qty,
o_material_transaction_inward.Received_qty,
    from 
o_material_transaction_inward 
    join 
s_material_details 
    on 
s_material_details.Mat_Code=o_material_transaction_inward.Mat_Code and s_material_details.Mat_Group_Id=o_material_transaction_inward.Mat_Group_id
    having 
o_material_transaction_inward.Entry_Date between Max(o_material_transaction_inward.Entry_Date) and Max(o_material_transaction_inward.Entry_Date - 15)

( vsの説明については、MySQLの受け入れられた回答:グループ関数の無効な使用を参照してください)wherehaving

于 2013-02-05T12:48:54.107 に答える