2017-08-01 55 views
-1

我有工會查詢,我想在每行添加一個單獨的序列號輸入查詢返回:SQL - 添加序列行號內

first table

我要添加序列行號即會這樣的工作:

second table

哪有我在SQL或漢娜DB這樣的行號?

+1

添加文本/代碼的信息並不像圖片請 – Jamiec

+1

顯示當前的查詢。行如何排序? –

+1

在B(2)組中,您最後可能指Ab(3)......? –

回答

0
SELECT 
    CONCAT(
    MainType, 
    ' (', 
    ROW_NUMBER() OVER(PARTITION BY MainType ORDER BY MainType), 
    ')' 
) as MainType, 
    CONCAT(
    LineType, 
    ' (', 
    ROW_NUMBER() OVER(PARTITION BY MainType, LineType ORDER BY MainType, LineType), 
    ')' 
) as LineType 
FROM 
    table 
0

我不知道漢娜Db的,但如果您使用的是SQL服務器,你可以嘗試以下,看看這是你想要

Create Table #Table 
(
    MainType varchar(4), 
    LineType varchar(6) 
) 

Insert Into #Table 
Values 
('A', 'Aa'), 
('A', 'Ab'), 
('A', 'Aa'), 
('A', 'Ac'), 
('A', 'Ab'), 
('B', 'Aa'), 
('B', 'Ab'), 
('B', 'Ab'), 
('B', 'Ac'), 
('B', 'Ab'), 
('C', 'Aa'), 
('C', 'Ac'), 
('C', 'Aa') 


Select *, 
DENSE_RANK() OVER (Order By MainType) as MainTypeRank, 
ROW_NUMBER() OVER (Partition By MainType, LineType Order By LineType) as LineTypeRank 
From #Table 
Order by MainType 
0

試試這個代碼才能獲得準確的結果是什麼

Create Table #TempTable 
(
    MainType varchar(4), 
    LineType varchar(6) 
) 

Insert Into #TempTable 
Values 
('A', 'Aa'), 
('A', 'Ab'), 
('A', 'Aa'), 
('A', 'Ac'), 
('A', 'Ab'), 
('B', 'Aa'), 
('B', 'Ab'), 
('B', 'Ab'), 
('B', 'Ac'), 
('B', 'Ab'),  
('C', 'Aa'), 
('C', 'Ac'), 
('C', 'Aa') 

以上是樣本數據。腳本得到的結果

SELECT CASE 
     WHEN Lag(maintyperank) 
       OVER( 
        ORDER BY maintyperank) = maintyperank THEN '' 
     ELSE maintyperank 
     END AS MainType, 
     linetyperank 
FROM (SELECT *, 
       maintype + '(' 
       + Cast(Dense_rank()OVER(ORDER BY maintype) AS VARCHAR(5)) 
       + ')' AS MainTypeRank, 
       linetype + '(' 
       + Cast(Row_number() OVER (partition BY maintype, linetype ORDER 
       BY 
         linetype)AS 
       VARCHAR(5)) 
       + ')' AS LineTypeRank 
     FROM #TempTable)Dt 

結果

 MainType   linetyperank 
     ------------------------- 
     A(1)   Aa(1) 
         Aa(2) 
         Ab(1) 
         Ab(2) 
         Ac(1) 
     B(2)   Aa(1) 
         Ab(1) 
         Ab(2) 
         Ab(3) 
         Ac(1) 
     C(3)   Aa(1) 
         Aa(2) 
         Ac(1)