2015-11-05 30 views
0

我有兩張工作表。第一張表#CustomerList我手動初始化值。然後我創建第二個表#CustomerListWithRank_Id,它基於第一個表#CustomerList如何從我的表中選擇不同的列?

第一和第二臺之間的唯一不同的是,第二個表#CustomerListWithRank_Id有一欄,讓每一個它的ROWNUMBER我用進一步下跌在我的SQL代碼時,我遍歷該錶行。

所以我的問題是,我只是想初始化#CustomerListWithRank_Id只有來自列[FileName]的唯一值,我該怎麼做?

SELECT '3004' Customer_No,'831001' DDD_Reference_No,'varer831.csv' [FileName] 
INTO #CustomerList -- DROP TABLE #CustomerList 
UNION ALL SELECT '3002' Customer_No,'199001' DDD_Reference_No,'varer199.csv' [FileName] 
UNION ALL SELECT '3003' Customer_No,'199002' DDD_Reference_No,'varer199.csv' [FileName] 

-

SELECT *, ROW_NUMBER() OVER (ORDER BY Customer_No) AS 'Rank_Id' 
INTO #CustomerListWithRank_Id --DROP TABLE #CUstomerListWithRank_ID 
FROM #CustomerList 

如果我使用GROUP BY [文件名]在上面的查詢我得到這個錯誤:

Msg 8120, Level 16, State 1, Line 1 
Column '#CustomerList.Customer_No' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause. 

回答

1

這是你需要什麼?

select *, ROW_NUMBER() OVER (ORDER BY Customer_No) AS 'Rank_Id' 
INTO #CustomerListWithRank_Id 
from 
(
    SELECT max(Customer_No) Customer_No, max(DDD_Reference_No) DDD_Reference_No, FileName 
    FROM #CustomerList 
    group by FileName 
) t 
+0

感謝您的幫助 –

0

這是你所需要的

SELECT * INTO #CustomerListWithRank_Id From 
(SELECT *, ROW_NUMBER() OVER (PARTITION BY FileName Order by Customer_No) AS RowNum FROM CustomerList) 
+0

我還需要一個行號正確種子 –

相關問題