以下の2つのSQLステートメントを結合したいと思っています。両方とも完全に別々に動作しますが、結合しようとすると結果が得られません。私が使用している3つのテーブルについて説明し、その下にコードを記述します。2つのテーブルを1つに結合するSQL
3つのテーブルstoctran、株式と部門があります。 部門から始めましょう。部門と説明(例:01、 'Food')が含まれています。次に、コード、説明、部門(コード)、オンハンド(ソートの項目数)、およびavrgcost(製品の平均コスト)を含む株表があります。最後にstoctranがあります。この表には、製品ごとに行われるすべての販売があり、フィールドは次のとおりです:itemcode(在庫と同じ)、tcode(請求書とクレジットノートを区別するコード)、amount費用(その項目の費用)、部門(その項目が属する部門)、およびtxdate(製品が販売された日付)のうちの1つ以上を含むことができる。
以下のコードからわかるように、私の最初のSQL文は特定の日付( '2017-01-01'と現在の日付)の間のnettsalesとnettcostを計算し、それを部門にグループ化し、その隣の部署の説明を記入してください。次に、2番目のSQL文は、(onhand * avrgcost)を使って合計株価を計算し、それを部門表にグループ化して、部門表を使用してその列の説明を列に追加します。
私の質問は、最初のステートメントのすべての列に部門ごとの合計株価を含む追加の列を与える方法で、これらの2つのSQLステートメントを結合する方法です。したがって、基本的には、2番目の文の2番目の列を取り出し、最初の文の列に追加します。 (最初の)部門毎の
売上高、純コスト
SELECT
a.DEPARTMENT,
b.DESCRIPTIO,
ROUND(SUM(IF(a.TCODE = 'IN', a.AMOUNT, 0)) -
SUM(IF(a.TCODE = 'CN', a.AMOUNT, 0)), 2) As NettSales,
ROUND(Sum(If(a.TCODE = 'IN', a.COST, 0)) - Sum(If(a.TCODE = 'CN', a.COST, 0)) As NettCost
FROM
stoctran a
LEFT JOIN
department b ON a.DEPARTMENT = b.DEPARTMENT
WHERE
a.TXDATE BETWEEN ;2017-01-01' And current_date
GROUP BY
a.DEPARTMENT
持株パーDepartmnet(秒)
SELECT
a.DEPARTMENT,
SUM(a.AVRGCOST * a.ONHAND) As StockValue
FROM
stock a
LEFT JOIN
department b On a.DEPARTMENT = b.DEPARTMENT
GROUP BY
a.DEPARTMENT
は、私は互換性のないデータベースタグを削除しました。実際に使用しているデータベースのみにタグを付けてください。 –