问题有两表
商品规格表一:
商品ID   商品组合ID   单位 转换率  商品名称
1          1           瓶    1      王老吉
2          2           箱    1       铅笔
3          2           盒    10      铅笔
4          2           支    80      铅笔
库存数量表二:
商品ID   数量   
1         20(瓶)
4         400(支)
库存表中存在的是 商品中的最小单位数量 我现在想得到数据如下

王老吉  20    瓶
铅笔    5     箱
铅笔    40    盒
铅笔    400   支

解决方案 »

  1.   


    把你的转换率全部写成于商品的最小单位的转换率:
    商品ID   商品组合ID   单位 转换率  商品名称
    1          1           瓶    1      王老吉
    2          2           箱    80       铅笔
    3          2           盒    10      铅笔
    4          2           支    1      铅笔
      

  2.   

    问题有两表
    商品规格表一:
    商品ID   商品组合ID   单位 转换率  商品名称
    1          1           瓶    1      王老吉
    2          2           箱    1       铅笔
    3          2           盒    10      铅笔
    4          2           支    80      铅笔
    库存数量表二:
    商品ID   数量   
    1         20(瓶)
    4         400(支)但是也有规律可寻 库存表400支   =5箱  =40盒 =400支
      

  3.   

    --> 生成测试数据表: [ta]
    IF OBJECT_ID('[ta]') IS NOT NULL
    DROP TABLE [ta]
    GO
    CREATE TABLE [ta] ([商品ID] [int],[商品组合ID] [int],[单位] [nvarchar](10),[转换率] [int],[商品名称] [nvarchar](10))
    INSERT INTO [ta]
    SELECT '1','1','瓶','1','王老吉' UNION ALL
    SELECT '2','2','支','1','铅笔' UNION ALL
    SELECT '3','2','盒','10','铅笔' UNION ALL
    SELECT '4','2','箱','80','铅笔'--> 生成测试数据表: [tb]
    IF OBJECT_ID('[tb]') IS NOT NULL
    DROP TABLE [tb]
    GO
    CREATE TABLE [tb] ([商品ID] [int],[数量] [int],单位 [nvarchar](10))
    INSERT INTO [tb]
    SELECT '1','20','瓶' UNION ALL
    SELECT '4','400','支'--SELECT * FROM [ta]
    --SELECT * FROM [tb]-->SQL查询如下:
    SELECT a.[商品名称],数量=b.数量/c.转换率,c.单位
    FROM ta a
    JOIN tb b 
    ON a.商品ID=b.商品ID
    JOIN ta c
    ON a.[商品组合ID]=c.[商品组合ID]
    /*
    商品名称       数量          单位
    ---------- ----------- ----------
    王老吉        20          瓶
    铅笔         400         支
    铅笔         40          盒
    铅笔         5           箱(4 行受影响)
    */楼主改一下A表的设计更好处理
      

  4.   

    先谢过htl258  我先看看