MS Access检查最后一个无空

时间:2017-03-09 11:38:32

标签: ms-access access-vba

我有下表 - 项目和大小是字段名称:

Item  Size1   Size2   Size3  Size4  Size5  Size6  Size7
ABY    S
XYZ    S       M       L      XL
FGH    8       10      12     14
QWE            4       5      6      7

但我需要达到以下目的:

Item     SizeRange
ABY        S
XYZ        S-XL
FGH        8-14
QWE        4-7

我可以通过SWITCH函数执行此操作并检查大小<> ''的位置,但实际上字段大小为15.是否有更简单,更清晰的方法来实现此目的?即VBA?

此致

迈克尔

1 个答案:

答案 0 :(得分:0)

如果您将表格重新设计为以下格式:
enter image description here

每个尺码都有一个重量或订单价值,因此您可以知道它们的使用顺序 这个SQL可能不是最好的实现(我有点生疏)会给出你的例子中显示的表:

SELECT    T1.Item
        , MinSize & IIF(Not MaxSize Is Null,' - ' & MaxSize,'') AS SizeRange
        , MaxSize
FROM    (
            SELECT TOP 1      Item
                            , Size AS MinSize
            FROM              tbl_ItemSizes
            GROUP BY          Item
                            , Size
                            , Weighting
            ORDER BY          Weighting
        ) T1 LEFT JOIN
        (
            SELECT TOP 1      Item
                            , Size AS MaxSize
            FROM              tbl_ItemSizes
            GROUP BY          Item
                            , Size
                            , Weighting
            ORDER BY          Weighting DESC
        ) T2 ON T1.Item = T2.Item  

(有人可以随意重写SQL。)

enter image description here