有两个表如下:
1。库存表(InfStock)
PkID style_no size special_size status1 status2 shipping_date
各字段意义如下:
PkID:主键,自增;style_no:款式;size:尺寸;special_size :特寸内容;status1 :库存状态(0:在库;1:出库);status2 :预约状态(0:未预约;1:已预约);shipping_date:这件物品的出货日
2。款式生产周期表(InfCycle)
PkID style_no produce_cyc
各字段意义如下:
PkID:主键,自增;style_no:款式;produce_cyc:生产周期
要求如下:
  根据款式,尺寸,特寸内容三个字段统计出目前所有的库存及预约数量
条件如下:
  1。DateTime.Now+生产周期必须小于出货日
  2。在库状态根据传入的参数确定(库存状态若为出库,则统计的是出库信息,若为在库,则是在库信息);
  3。统计预约数量时,补充条件预约状态=1
显示格式如下:
  款式     尺寸   特寸内容   在库状态     在库数量    预约数量 
ESS-181    21T      ss        在库           10         4

解决方案 »

  1.   

    SELECT s.style_no, s.Size, s.special_size, s.status1,
    COUNT(DISTINCT s.PkID) AS 在库数量,
    SUM(CASE status2 WHEN 1 THEN 1 END) AS 预约数量
    FROM InfStock s INNER JOIN InfCycle c
    ON s.style_no=c.style_no
    AND GETDATE()+c.produce_cyc<=s.shipping_date
    WHERE s.status1='在库状态根据传入的参数确定'
    GROUP BY s.style_no, s.Size, s.special_size, s.status1