根据标准组合记录

时间:2016-07-26 14:43:15

标签: sql database ms-access

我目前有一套约6k的记录,其中包含货件信息。字段是

行驶里程,体积,身份证,原产地城市/州/邮编,目的地城市/州/邮编,最小重量,最大重量和设备类型(用于运输)。

对于设备类型,所有内容都根据其类型进行拆分。但是,我需要组合具有所有相同标准(行驶里程,ID,原点,目的地等)的字段,这些字段可以是“FT”或“SD”(两种类型的设备类型。

我可以编写一个IIF语句来使字段“FT-SD”,如果它是一个或另一个,但它没有组合字段并删除重复到一个记录,例如,如果有一个记录与SD和一个与FT。

然后我需要另一个具有%的FT和%的SD的字段。

所以,例如,假设我有两个字段如下

120m - 10-雅典 - GA - 30606 - 芝加哥 - IL - 60290 - 24000lbs - 48000lbs - FT

120m - 10-ATHENS - GA - 30606 - 芝加哥 - IL - 60290 - 24000lbs - 48000lbs - SD

我需要将它合并到

120m - 20 - 雅典 - GA - 30606 - 芝加哥 - IL - 60290 - 24000lbs - 48000lbs - FT / SD - 50%FB - 50%SD

或类似的东西。

一切都有帮助!

谢谢,

萨姆

1 个答案:

答案 0 :(得分:0)

考虑一个聚合查询,您可以根据所需的匹配字段进行分组,并使用两种设备类型过滤记录。然后,使用条件聚合列除以百分比细分的总组数:

SELECT [Miles traveled], [Volume], [ID], [Origin City/State/Zip],
       [Destination City/State/Zip], [Min Weight], [Max Weight], 'FT/SD' AS [Equipment Type]
       SUM(IIF([Equipment Type] = 'FT', 1, NULL)) / COUNT(*) AS FT_PCT, 
       SUM(IIF([Equipment Type] = 'SD', 1, NULL)) / COUNT(*) AS SD_PCT    
FROM ShipmentTableName
WHERE [Equipment Type] IN ('FT', 'SD')
GROUP BY [Miles traveled], [Volume], [ID], [Origin City/State/Zip], 
         [Destination City/State/Zip], [Min Weight], [Max Weight]