0

私は2つのテーブルを持っています、INWARDSそしてOUTWARDS。異なる在庫ごとの各日付の内向きと外向きの合計、およびその日に残っている在庫の残高を表示する必要があります。日付でグループ化する必要はありません。在庫の在庫の総数を指定するだけです。

私は次のようにクエリを書きました:

SELECT
    I.Date as'Date',
    P.ResourceName as 'Item Name',
    P.ResourceRate as'Rate',
    i.Qty as Inwards Quantity',
    (   select qty
        from Outwards_master
        where I.Date=S.Date and I.Nameofitem =S.Nameofitem
    ) as 'Outwards Quantity',
    (   select (sum(i.qty)-sum(S.Qty))
        from Inwards_Master
            inner join Outwards_Master
            on i.Nameofitem=S.Nameofitem
    ) as 'Balance'
From Resource_Master P, Inwards_Master I, Outwards_Master S
WHERE (I.Nameofitem= P.ResourceName) and P.TenderCode = 1

このクエリでエラーが発生します。何が問題ですか?

エラーは次のとおりです。

メッセージ8120、レベル16、状態1、行1の列'Inwards_Master.Date'は、集計関数またはGROUP BY句のいずれにも含まれていないため、選択リストでは無効です。

4

1 に答える 1

0

私はあなたの質問に基づいてあなたがこのようなものが欲しいと推測しています:

SELECT I.Date as Date, 
  P.ResourceName as ItemName,
  P.ResourceRate as Rate,
  i.Qty as InwardsQuantity,
  s.qty as OutwardsQuantity,
  i.qty-S.Qty as Balance,
  O.UnitSymbol As ItemUnit
FROM UnitMaster O
INNER JOIN Resource_Master P
  ON O.UnitCode = P.Unitcode
INNER JOIN Inwards_Master I
  ON I.Nameofitem= P.ResourceName
INNER JOIN Outwards_Master S 
  ON I.Date=S.Date 
  AND I.Nameofitem =S.Nameofitem
WHERE P.TenderCode=1

すべてのアイテムを表示したい場合は、LEFT JOIN:を使用することをお勧めします。

SELECT I.Date as Date, 
  P.ResourceName as ItemName,
  P.ResourceRate as Rate,
  i.Qty as InwardsQuantity,
  s.qty as OutwardsQuantity,
  i.qty-S.Qty as Balance,
  O.UnitSymbol As ItemUnit
FROM UnitMaster O
INNER JOIN Resource_Master P
  ON O.UnitCode = P.Unitcode
LEFT JOIN Inwards_Master I
  ON I.Nameofitem= P.ResourceName
LEFT JOIN Outwards_Master S 
  ON I.Date=S.Date 
  AND I.Nameofitem =S.Nameofitem
WHERE P.TenderCode=1

編集#1、あなたのコメントに基づいて、私は問題が何であるかを完全に知ることはできませんが、サブクエリで合計量を取得してみることができます:

SELECT I.Date as Date, 
  P.ResourceName as ItemName,
  P.ResourceRate as Rate,
  i.TotalInQty as InwardsQuantity,
  s.TotalOutQty as OutwardsQuantity,
  i.TotalInQty-S.TotalOutQty as Balance,
  O.UnitSymbol As ItemUnit
FROM UnitMaster O
INNER JOIN Resource_Master P
  ON O.UnitCode = P.Unitcode
LEFT JOIN
(
  select sum(i.Qty) TotalInQty, Nameofitem
  from Inwards_Master I
  group by Nameofitem
) I
  ON I.Nameofitem= P.ResourceName
LEFT JOIN
(
  select sum(s.qty) TotalOutQty, Nameofitem
  from Outwards_Master S 
  group by s.Nameofitem
) S
  ON I.Date=S.Date 
  AND I.Nameofitem =S.Nameofitem
WHERE P.TenderCode=1
于 2013-01-08T12:03:40.540 に答える