我有一個Access 2000查詢適用於SQL Server 2008 R2的鏈接表。我需要把它寫成一個視圖或通過查詢:1000000,與OODD%,但不開始下subquery or passthrough; SQL Server 2008r2
`
SELECT Max(CLng((Mid([tbl1]![ID],5)))) AS lastnumberused
FROM [tbl1]
WHERE ((([tbl1]![ID]) Like "OODD*" And ([tbl1]![ID]) Not Like "OODDid*" And ([tbl1]![ID]) Not Like "*x") AND ((CLng((Mid([tbl1]![ID],5))))<1000000));
`
所以,我正在尋找的是最大號OODDID%。記錄也不能以'x'結尾。
我的TSQL代碼爲SQL Server看起來像這樣並不起作用......
`
SELECT
convert (int, (substring(tblMain.BarcodeID,5,10))) as X1, [ID]
FROM tblMain
WHERE ([tbl1]![ID] LIKE N'OODD%')
AND ([tbl1]![ID] NOT LIKE N'%x%')
AND ([tbl1]![ID] NOT LIKE N'OODDID%')
Select MAX (x1)+1
from bar1
where (x1<1000000)
`
建議? 感謝,H
更新15june2013 WITH T1 (number) AS (SELECT substring(tbl1.ID,5,10) FROM tblMain AS tbl1 WHERE (ID LIKE N'oodd%') AND (ID NOT LIKE N'%x%') AND (ID NOT LIKE N'ooddID%')) SELECT (cast((number)as int)) FROM T1
這工作,並返回561770行。
With T1(number) as(SELECT cast(SUBSTRING(ID, 5, 7)as int) FROM tblMain as tbl1 WHERE (tbl1.ID LIKE N'oodd%') AND (tbl1.ID NOT LIKE N'%x%') AND (tbl1.ID NOT LIKE N'%ooddID%') AND ISNUMERIC(SUBSTRING(tbl1.ID,5,10))=1) Select max(number) from T1
同樣的工作,但返回上述百萬
一些當一個where語句添加以下代碼包含應被排除在前面的語句記錄。 With T1(number) as(SELECT cast(SUBSTRING(ID, 5, 7)as int) FROM tblMain as tbl1 WHERE (tbl1.ID LIKE N'oodd%') AND (tbl1.ID NOT LIKE N'%x%') AND (tbl1.ID NOT LIKE N'%ooddID%') AND ISNUMERIC(SUBSTRING(tbl1.ID,5,10))=1) Select max(number) from T1 where x1 <1000000
Clon-謝謝。此代碼正在運行,您發現我在原始帖子中犯的錯誤是正確的。我試圖隱藏表格和字段名稱。雖然這個工作沒有錯誤,但它仍然沒有給出我的Access前端正在給予的正確答案。再次謝謝 - 我將在稍後的日期發佈工作代碼/ – Hikerd
Hikerd--你能告訴我你得到的答案與正確答案嗎?另外,ID字段內容中是否有任何一致的結構?這可能會有所幫助。 – Clon
另外,您應該更改子字符串函數(5和10)的參數以滿足您的要求。我必須根據給定的信息來猜測它們。 – Clon