2012-03-13 51 views
3

好吧,說我有一個表字段「代碼」。查詢select code from mytable group by code回報:加入一個列,其中包含以前的最大

code 
EM010 
EM100 
EM101 
EM105 
EM106 
... 

我需要添加一列(以加入或東西)將包含一個最高的代碼。上述將轉向:

code code2 
EM010 null (or blank or wtvr) 
EM100 EM010 
EM101 EM100 
EM105 EM101 
EM106 EM105 
...  ... 

我提供什麼,我已經試過,但它的混亂,我不斷意識到我會約了錯誤的方式。

btw,我在vfp工作,所以它的技術tsql,但我應該能夠轉換任何不同的,所以我不介意,如果我得到的答案,尚未在tsql中測試。

回答

1

嘗試

DECLARE @T TABLE (Code VARCHAR(5)) 
INSERT @T VALUES ('EM010'), ('EM100'), ('EM101'), ('EM105'), ('EM106') 

SELECT T1.Code, 
     ( SELECT MAX(Code) 
      FROM @T t2 
      WHERE t1.Code > t2.Code 
     ) AS Code2 
FROM @T t1 
+0

我最終做了這樣的事情。在vfp中你不能引用你之外的東西sub select所以:'WHERE t1.Code> t2.Code'不起作用。我最終使用子例程爲我做了子選擇。 – slicedtoad 2012-03-20 14:18:51

4

試試這個:

WITH T1 AS 
(
    SELECT code, ROW_NUMBER() OVER (ORDER BY code) AS rn FROM 
    (
     SELECT DISTINCT code FROM mytable 
    ) 
) 
SELECT T1.code, T2.code AS code2 
FROM T1 
LEFT JOIN T1 AS T2 
ON T1.rn = T2.rn + 1 

順便說一句,在SQL Server 2012中您可以使用LAG解析函數,你想要做什麼。我不確定Visual Fox Pro是否支持它。

+0

戶外我覺得VFP可以做類似的用'top'落後的東西,我現在看着它。如果這能起作用,它會很棒。 – slicedtoad 2012-03-13 20:02:56

+0

nope,nvm。我喜歡你的解決方案,但vfp比我想象的更有限。我甚至沒有row_number函數。無論如何,我使用gareth的解決方案和一些子程序來解決vfp的侷限性。 – slicedtoad 2012-03-20 14:20:35

相關問題