我现在有一个表,如下
日期       物料代码  数量
2009-01-01   A001     10
2009-01-15   A001     16
2009-01-20   A001     9
2009-01-01   A002     20
2009-01-15   A002     45
2009-01-20   A002     32
我想得到的结果是:
日期       物料代码  数量  标识
2009-01-01   A001     10
2009-01-15   A001     16
2009-01-20   A001     9    还可领料
2009-01-01   A002     20
2009-01-15   A002     45
2009-01-20   A002     -3   超领数量
不知道sql能否做谢谢

解决方案 »

  1.   

    DECLARE @TB TABLE([日期] DATETIME, [物料代码] VARCHAR(4), [数量] INT)
    INSERT @TB 
    SELECT '2009-01-01', 'A001', 10 UNION ALL 
    SELECT '2009-01-15', 'A001', 16 UNION ALL 
    SELECT '2009-01-20', 'A001', 9 UNION ALL 
    SELECT '2009-01-01', 'A002', 20 UNION ALL 
    SELECT '2009-01-15', 'A002', 45 UNION ALL 
    SELECT '2009-01-20', 'A002', -3SELECT A.*,CASE WHEN B.[日期] IS NOT NULL THEN CASE WHEN [数量]>0 THEN N'还可领料' ELSE N'超领数量' END ELSE N'' END AS 标识
    FROM @TB AS A LEFT JOIN (
    SELECT MAX([日期])AS [日期],[物料代码] FROM @TB GROUP BY [物料代码]) B
    ON A.[日期]=B.[日期] AND A.[物料代码]=B.[物料代码]
    /*
    日期                      物料代码 数量          标识
    ----------------------- ---- ----------- ----
    2009-01-01 00:00:00.000 A001 10          
    2009-01-15 00:00:00.000 A001 16          
    2009-01-20 00:00:00.000 A001 9           还可领料
    2009-01-01 00:00:00.000 A002 20          
    2009-01-15 00:00:00.000 A002 45          
    2009-01-20 00:00:00.000 A002 -3          超领数量
    */