私のMS SQL Serverのクエリがあります。このクエリは、在庫にあるすべての製品の数量を計算し、各店舗の購入および販売のために待機します。ユニオンを使用して4つの異なるテーブルから最新の日付を取得する
SELECT i.no_,
s2.location,
s2.bincode,
s2.inventory,
s2.purchase,
s2.sale,
s2.defbinflag
FROM dbo.[kasia$item] AS i WITH (nolock)
LEFT OUTER JOIN (SELECT s.itemno,
s.location,
bc.bincode,
Sum(s.inventory) AS Inventory,
Sum(s.purchase) AS Purchase,
Sum(s.sale) AS Sale,
bc.defbinflag
FROM (SELECT [item no_] AS ItemNo,
[location code] AS Location,
Sum(quantity) AS Inventory,
0 AS purchase,
0 AS sale,
[bin code] AS BinCode
FROM dbo.[kasia$warehouse entry] WITH
(nolock
)
WHERE (quantity <> 0)
GROUP BY [item no_],
[location code],
[bin code]
UNION ALL
SELECT no_ AS ItemNo,
[location code] AS Location,
0 AS Inventory,
Sum([outstanding qty_ (base)]) AS purchase,
0 AS sale,
[bin code] AS BinCode
FROM dbo.[kasia$purchase line] WITH (
nolock)
WHERE ([document type] = 1)
AND (type = 2)
GROUP BY no_,
[location code],
[bin code]
UNION ALL
SELECT no_ AS ItemNo,
[location code] AS Location,
0 AS Inventory,
0 AS purchase,
Sum([outstanding qty_ (base)]) AS sale,
[bin code] AS BinCode
FROM dbo.[kasia$sales line] WITH (
nolock)
WHERE ([document type] = 1)
AND (type = 2)
GROUP BY no_,
[location code],
[bin code]
UNION ALL
SELECT [item no_] AS ItemNo,
[transfer-from code] AS Location,
0 AS Inventory,
0 AS purchase,
Sum([outstanding qty_ (base)]) AS sale,
[transfer-from bin code] AS BinCode
FROM dbo.[kasia$transfer line] WITH (
nolock)
GROUP BY [item no_],
[transfer-from code],
[transfer-from bin code]) AS s
LEFT OUTER JOIN
(SELECT DISTINCT
[item no_],
[location code],
[bin code] AS BinCode,
[default] AS DefBinFlag
FROM dbo.[kasia$bin content]
WITH (nolock)
GROUP BY [item no_],
[location code],
[bin code],
[default]) AS bc
ON s.itemno = bc.[item no_]
AND bc.[location code] =
s.location
AND bc.bincode = s.bincode
WHERE (bc.bincode IS NOT NULL)
GROUP BY s.itemno,
s.location,
bc.bincode,
bc.defbinflag) AS s2
ON s2.itemno = i.no_
しかし、私は4つのテーブルの一つに最新のエントリの日付を追加する必要がある必要がある
[kasia$warehouse entry]
[kasia$purchase line]
[kasia$sales line]
[kasia$transfer line]
私は最後のエントリを含む日時変数で最終セットで列を得ることができる方法4つのテーブルから?私は私はそれが読めなくなるだろう日付を取得しようとしていると正常に動作し、このクエリを肉屋しようとしていないが、次のように列は以下のとおりです。今のところ
[kasia$warehouse entry] [Expected Receipt Date]
[kasia$purchase line] [Shipment Date]
[kasia$sales line] [Shipment Date]
[kasia$transfer line] [Registering Date]
iは、結果として、例えば、これを持っている:
+---------+----------+---------+-----------+----------+------+------------+
| No_ | location | bincode | inventory | purchase | sale | defbinflag |
+---------+----------+---------+-----------+----------+------+------------+
| 0035513 | dp | V14-3 | 3 | 2 | 1 | 1 |
+---------+----------+---------+-----------+----------+------+------------+
日付を含む列を追加する必要があります。
私が知る限り、これらのテーブルから*日付を返すわけではありません。私はその質問を理解していない。 –
はい!投稿を編集します。 – HellOfACode
解決策ではなく、むしろ提案です。私はクエリを簡単に見直すために、いくつかのCTEに分解します。それを見ると、めまいがする。これを行うと、 'ROW_NUMBER'や' DENSE_RANK'のようなウィンドウ関数を使って順序を決定することもできます。 – pimbrouwers