我对MS SQL Server有查询。该查询会计算每个商品中有多少商品,并在每个商店中排队购买和销售。使用union all从四个不同的表中获取最新日期
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_
但我需要需要添加最新的进境之日起在四个表的一个
[kasia$warehouse entry]
[kasia$purchase line]
[kasia$sales line]
[kasia$transfer line]
我怎么能拿在决胜盘一列包含最后一个条目的日期时间变量从四张桌子?我还没有试过杀猪此查询与我试图让这将使其成为不可读的日期优秀作品,但列如下:
[kasia$warehouse entry] [Expected Receipt Date]
[kasia$purchase line] [Shipment Date]
[kasia$sales line] [Shipment Date]
[kasia$transfer line] [Registering Date]
现在我有这样的例子,结果:
+---------+----------+---------+-----------+----------+------+------------+
| No_ | location | bincode | inventory | purchase | sale | defbinflag |
+---------+----------+---------+-----------+----------+------+------------+
| 0035513 | dp | V14-3 | 3 | 2 | 1 | 1 |
+---------+----------+---------+-----------+----------+------+------------+
我需要添加一个列的日期。
从我可以告诉,你没有返回*任何*日期从这些表。我不明白这个问题。 –
是的!我将编辑帖子。 – HellOfACode
不是一个解决方案,而是一个建议。我会将查询分解成几个CTE,以便更容易地进行审阅。看着它让我头晕目眩。这样做也可以让你使用像ROW_NUMBER或DENSE_RANK这样的窗口函数来确定排序。 – pimbrouwers