2017-02-26 78 views
0

目前,我有行的表看起來像這樣合併價值乘數記錄/ Excel中

Table

我想用同樣的FlNo所有行合併到一個單一的行,合併後的行的數據遵循這些標準:

  • 「FlNo」保持不變
  • 「開始」將是最早日期
  • '結束'將是最新日期
  • '模式'將代表星期幾,所以它將是在每一行中出現的所有星期幾的組合(即,如果第1行的模式=「12347」,第2行=「34567」,組合模式將=「1234567」,即2:如果第1行=「357」,第2行=「357」,組合模式將保持相同=「357」 )。這部分困擾了我最多,因爲我還沒有找到解決它的算法。
  • 「AC_Name」將是其中出現大多數時間用於FlNo的值(在這種情況下將是32)

所以最後一行將是

FlNo | Start  | End   | Pattern | AC_Name | 
660 | 26/Mar/2017 | 28/Oct/2017 | 1234567 | 32 | 

由於原來的數據是一個Excel Spreadsheet,因此應該基於Excel(VBA)/ Access(VBA/SQL)環境提供解決方案。它可以先在Excel中處理,然後導入到Access或導入到Access,然後在那裏處理或半/半)。就個人而言,我寧願使用Access和SQL進行處理,因爲大約有13000行數據。

請幫我找到解決方案來處理這些數據。非常感謝你們。

+1

修復你的數據結構!在每週的每一天都有一列,填充一個標誌(例如「0」和「1」),表示該日是否屬於「模式」的一部分。 –

+0

@GordonLinoff感謝您的回覆。是的,我可以做到這一點,但那麼我如何將數據合併在一起? –

+0

這是一個有趣的問題。希望您以特殊的方式提供數據而不是圖片。問題的第二部分不清楚。您的實際數據庫excel/access/sql server是什麼?可能這是SSIS的理想場景。 – KumarHarsh

回答

0

一旦你有固定的數據,爲所有,但Ac_Name查詢,簡直是:

select FINo, min(start), max(end), 
     max(IsMonday), max(IsTuesday), . . . 
from t 
group by FINo; 

獲得Ac_Name是棘手的。這應該工作:

select FINo, min(start), max(end), 
     max(IsMonday), max(IsTuesday), . . ., 
     (select top 1 ac_name 
     from t as t2 
     where t2.FINo = t.FINo 
     group by ac_name 
     order by count(*) desc, ac_name 
     ) as ac_name 
from t 
group by FINo; 
+0

這是完美的,謝謝! –

+0

如果我還想選擇3個其他字段,Blkt,STD,STA,該怎麼辦?我想選擇與STD和STA等價的Max(Blkt)(每個幀都有自己的STD和STA)。非常感謝! –

+0

@TracNgon。 。 。新問題應該作爲問題提出,而不是作爲評論。但是,您可能可以重複子查詢以獲取更多列。 –

1

一旦已正確固定您爲圖案列的數據結構

則可以通過使用min(),MAX()和組..聯合到所選擇的表,最大爲計數

select 
    t1.FlNo 
, min(t1.Start) 
, max(t1.End) 
, max(D1) 
, max(D2) 
, max(D3) 
, max(D4) 
, max(D5) 
, max(D6) 
, max(D7) 
, t2.AC_Name 
    from my_table t1 
    INNER JOIN ( 

     select FlNo, AC_Name, max(my_count) from ( 
     select FlNo, AC_Name , count(*) AS my_count 
     from my_table 
     group by FlNo, AC_Name) t 
     GROUP BY lNo, AC_Name 
     having my_count = max(my_count) 
) t2 on t1.FlNo = t2.FlNo 
+0

這似乎並不適用於我(我只將my_table更改爲我的表名,並在第一行的t1.FlNo後添加了逗號)。錯誤說Count(*)上有一個錯誤my_count –

+0

另外我有新的結構7模式的列,mamed:D1,D2,....值爲0或1.我怎麼也加入他們在好? –

+0

答案已更新.. – scaisEdge