使用条件防止连接表中的数据不匹配

时间:2017-11-18 10:42:20

标签: sql sql-server join

我正在建立一个不同分支机构的库存管理系统来进行单独管理。 我有一个具有不同分支ID的分支列表。 我将分支ID作为查询字符串传递给url。

在数据库方面,我有3个单独的表来存储项目详细信息,每日数据,更新数据

  1. 项目明细表(stock_item_detail)

    item_id |  item_code |  item_unit |  alert_limit | item_name | Branch_id
    1       | bc001      |     kgs     |   50        | Rice Flour | 1  
    
  2. 每日数据表(stock_daily_data)

    item_code |quantity_used |   date      | stock_left| branch_id
    bc001  |    5         | 18-11-2017 |      45    | 1 `
    
  3. 更新数据(stock_update_data)

    item_code | remarks | quantity | date    | branch_id
    bc001    |pur0123   | 50       | 17-11-2017 | 1`
    
  4. 我通过执行查询

    获取最近评论所订购的特定日期的项目列表
    With cte as (
        select d.item_code,
               item_name,
               item_unit,
               alert_limit,
               d.quantity_used,
               d.stock_left,
               d.date 
        from stock_item_detail p join stock_daily_data d on d.item_code=p.item_code 
        where d.branch_id ='1' 
        ) 
        select * 
        from cte c cross apply 
        ( 
            select top 1 remarks 
            from stock_update_data ps 
            where ps.item_code= c.item_code and c.date='18-11-2017' order by date 
        ) b(remarks);
    

    如果上述查询提供空结果

    INSERT stock_daily_data (item_code,date,quantity_used,stock_left ,branch_id) 
    select distinct item_code,'18-11-2017',0,stock_left,'1' 
    from 
    (
        select  stock_item_detail.item_code, 
                stock_daily_data.stock_left, 
                row_number() over (partition by stock_daily_data.item_code order by stock_daily_data.date desc) as rn 
        from stock_item_detail join stock_daily_data on stock_item_detail.item_code = stock_daily_data.item_code ) tt where rn = 1;
    

    现在我面临的问题是所有项目,无论其分支ID是否被复制到具有特定分支ID的每日数据表中。 请告诉我哪里错了。 将不胜感激。

0 个答案:

没有答案