私はSQLの新しいユーザーです。私のコードでいくつかの助けをすることができます、助けてください!SQL Server複数のテーブル複数のフィルタ
Iは、2つのテーブルを持っている:表1(品目マスタ)及び表2(購入履歴)
- 表1、表2は、すべての単一を有する
- 等について、ベンダー、倉庫のような商品情報を持ちますトランザクション。
表1の例
ITEM Warehouse Vendor
------------------------------
ITEM-0001 ATLANTA AMAZON
ITEM-0002 ATLANTA AMAZON
ITEM-0003 ATLANTA GOOGLE
ITEM-0004 ATLANTA AMAZON
表2例
ITEM Purchase Date Price WAREHOUSE RECEIVE DATE
----------------------------------------------------------------
ITEM-0001 01/01/2017 $5 ATLANTA 03/05/2017
ITEM-0001 01/01/2017 $5.2 DENVER 02/03/2017
ITEM-0001 01/02/2017 $5.4 L.A. 05/07/2017
ITEM-0002 .... AND SO ON
私は結合された結果セットがしたい - このような:
ITEM(T1) WAREHOUSE(T1) VENDOR(T1) Avg_Price(T2) LEADTIME
------------------------------------------------------------------
ITEM-0001 ATLANTA AMAZON 5.33333 65 DAYS
ITEM-0002 ATLANTA AMAZON ... so on
をここに私のSQLコードです:
SELECT
A.ITEM, A.WAREHOUSE, A.VENDOR, B.PRICE, B.LEADTIME
FROM
TABLE1 A, TABLE2 B
WHERE
A.ITEM = B.ITEM
AND B.PRICE = (SELECT AVG(B.PRICE)
FROM TABLE2 B
WHERE A.ITEM = B.ITEM
GROUP BY B.ITEM)
この部分は問題なく平均価格を追加します。今私が苦労しているのは、私がLEADTIMEを追加したいときです。それをどのようにコード化するのか?
LEADTIMEは、特定のベンダーおよび特定の倉庫のアイテムが到着する平均時間です。たとえば、item0001がベンダーxから倉庫yに6,8,10日後に到着した場合、リードタイムはそのベンダーとその倉庫のこれらの日の平均(8日間)になります。
助けてください!
事前
のおかげで編集:HERE HELPはMY NEW CODEされた後... THANKS!
SELECT B.ITEM,
A.VENDOR,
B.WAREHOUSE,
SUM(A.QUANTITY),
AVG(A.PRICE) AS AVGERAGE_PURCHASE PRICE,
AVG(A.RECEIVEDATE- A.PURCHASEDATE) AS LEADTIME,
FROM ITEMTABLE B
JOIN ITEMPURCHASETABLE A
ON (B.ITEM=A.ITEM AND B.WAREHOUE=A.WAREHOUSE)
WHERE A.PURCHASEDATE > 1170101
GROUP BY B.ITEM, B.WAREHOUSE, A.VENDOR
HAVING (MIN(A.PRICE)/MAX(A.PRICE)) !<0.1 AND COUNT(A.PRICE) >3
ORDER BY INVENTORY_COST DESC
新しい質問:日付は1YYMMDDの形式ですか?
[悪い習慣をキックする:古いスタイルを使用してJOINを](http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-old ANSI - ** 92 ** SQL標準(** 25年*)の*適切な* ANSI 'JOIN'構文で置き換えられた*スタイルのコンマで区切られたテーブル* *前)とその使用はお勧めしません –
あなたはリードタイムを追加したいと私たちにこれを教えてくださいしかしあなたはリードタイムが何であるか教えてください。リードタイムとは何ですか? – Hogan