2015-05-12 72 views
0

我有查詢查找零件信息。有多少零件,以及上次訂購零件的時間以及其他一些事情。我無法創建一個新表,否則我只需創建一個日曆表並將它們結合在一起。SQL Server 2008.派生表日曆模糊列名稱錯誤

我想要做的是填寫缺少的日期信息,並保留上一個結束數量,直到輸入新的交易。

下面是該查詢的截圖結果

Query results 和查詢本身的代碼。

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 = '' 
+0

您需要一個問題。除了一些奇怪的東西(什麼是B10?爲什麼你選擇每行多行?),你的查詢沒有什麼明顯的錯誤。 –

+0

如txdate列下的屏幕截圖所示,日期中存在差距。如果可能,我想填寫缺失的日期而不創建另一個表,因爲我無法創建任何表。就B10中的內容而言,它是SQL代碼所在的位置。我們的查詢在Excel中運行併發布。 – Rick

回答

0

根據你的散文,你可以創建一個派生萬年曆錶。

declare @theDate as date 
, @maxDate as date 

set @theDate = '20150101'; 
set @maxDate = '20150105'; 


with dates AS 
(select @theDate DateValue 
union all 
select dateadd(day, 1, DateValue) 
from dates 
where dateadd(day, 1, DateValue) < @maxDate 
) 
select DateValue, otherFields 
from dates join someRealTable on datevalue = someDateField 
+0

我使用過,但是我遇到了一個問題,添加了正確的信息。詳情請參閱編輯。 – Rick