我在寫我的第一個SQL查詢,所以請原諒我對此事缺乏瞭解。通過加入SQL篩選
我正在尋找從每個連接過濾多次,它似乎執行的查詢總行增長,而不是收縮。
/*
Reads Order Status, determines if it's OPEN
Pulls all OPEN orders to Time Tickets
Reads the Time Ticket TicketDate, determines if it's > 90 days old
Compares PODet JobNo, joins PO table
Reads the PO DateMod, determines if it's > 90 days old
*/
DECLARE @now DATETIME
DECLARE @90daysago DATETIME
SET @now = GETDATE()
SET @90daysago = DATEADD(day, -90, @now)
SELECT
o.JobNo,
o.OrderNo,
o.PartNo,
o.Status,
o.JobNo,
t.TicketDate,
p.Status,
p.OutSideService,
p.PONum,
po.DateEnt,
po.DateMod
FROM
RBCBEMD.dbo.OrderDet AS o /* OrderDet = o */
INNER JOIN RBCBEMD.dbo.TimeTicketDet AS t /* TimeTicket = t */
ON o.JobNo = t.JobNo
INNER JOIN RBCBEMD.dbo.PODet AS p /* PODet = p */
ON o.JobNo = p.JobNo
INNER JOIN RBCBEMD.dbo.PO AS po /* PO = po */
ON p.PONum = po.PONum
WHERE
o.Status = 'Open' AND
t.TicketDate <= @90daysago AND
po.DateMod <= @90daysago
ORDER BY
cast(t.TicketDate as DATETIME) DESC
該查詢應該從OrderDet表中找到OPEN訂單。從那裏,如果它是OPEN,則從TimeTicketDet表中取出最後一個TicketDate。確定TicketDate是否> 90天。如果它大於90天,則從PO表中拉出PONum,找到它的DateMod並確定它是否大於90天。
如果(o.status ='Open')AND(t.ticketDate> 90天大)AND(po.DateMod> 90天大)然後發佈JobNo的結果。
我找不到任何錯誤的查詢從快速掃描。它正在做你正在尋找的東西。現在,由於越來越多的門票將超過90天,我希望每次運行它時結果都會增長。你在結果中列出了''''t.ticketDate和po.DateMod''',爲什麼不檢查它們是否每個都超過90天?一個具體的問題對我們幫助你是有幫助的。 – Anand