我有查詢查找零件信息。有多少零件,以及上次訂購零件的時間以及其他一些事情。我無法創建一個新表,否則我只需創建一個日曆表並將它們結合在一起。SQL Server 2008.派生表日曆模糊列名稱錯誤
我想要做的是填寫缺少的日期信息,並保留上一個結束數量,直到輸入新的交易。
下面是該查詢的截圖結果
和查詢本身的代碼。
Select t.txNumber,
t.item,
t.txCode,
t.txdate,
(t.onhandlocold + t.stockQty) as 'Ending Quantity',
tmax.maxtnumber 'Latest Transaction Code',
tmax.maxdate 'Latest Transaction Date',
tmin.mindate 'First Transaction Date',
DATEDIFF(dd,tmin.mindate,t.txdate) 'weight of transaction'
From tbliminvtxhistory t
Left outer join
(Select t.item, max(t.txnumber) as maxtnumber, max(t.txdate) as maxdate
From tbliminvtxHistory t
Where t.txCode != 'PAWAY'
Group By Item) tmax
on t.item = tmax.item
Left Outer Join
(Select t.item, min(t.txdate) as mindate
From tbliminvtxHistory t
WHere t.txCode != 'PAWAY'
and t.txdate > DateAdd(Year, -1, GetDate())
Group By Item) tmin
on t.item = tmin.item
where t.item = 'LR50M'
and t.txCode != 'PAWAY'
and t.txdate > DateAdd(Year, -1, GetDate())+B10
UPDATE
多虧了用戶輸入我能夠創建一個臨時壓延機,將解決我的問題。然而,我缺乏SQL知識阻止了我正確使用它。在代碼的最後一行,特別是on txdate = ''
它會拋出一個錯誤,說ambiguous column name
。我嘗試使用t.txdate
,但這也會引發錯誤,說明multi part identifier could not be bound
。
既然這些都不能使用我想知道如果我沒有犯錯代碼中更遠的錯誤或什麼?如果有人能夠發現我的錯誤,那就太棒了!
下面是代碼:
declare @theDate date
, @maxDate as date
set @theDate = '20150101';
set @maxDate = '20150105';
with dates AS
(select @theDate txdate
union all
Select dateadd(day, 1, txdate)
from dates
where dateadd(day, 1, txdate) < @maxDate
)
select txdate
from dates join tbliminvtxhistory on txdate = ''
您需要一個問題。除了一些奇怪的東西(什麼是B10?爲什麼你選擇每行多行?),你的查詢沒有什麼明顯的錯誤。 –
如txdate列下的屏幕截圖所示,日期中存在差距。如果可能,我想填寫缺失的日期而不創建另一個表,因爲我無法創建任何表。就B10中的內容而言,它是SQL代碼所在的位置。我們的查詢在Excel中運行併發布。 – Rick