本帖最后由 asd613613 于 2014-06-20 13:11:44 编辑

解决方案 »

  1.   

    WITH test(FNumber,FSeries,FItemID)
    AS
    (
    SELECT 'M.QZ.AM.TL.00001',N'内牙','2010' UNION ALL
    SELECT 'B.QZ.AM.TL.00024',N'内牙','2010' UNION ALL
    SELECT 'B.QT.AM.TL.00022',N'内牙','2010' UNION ALL
    SELECT 'P.BJ.PL.00008',N'平螺母','2010' UNION ALL
    SELECT 'P.CY.QW.00001',N'球碗','2010' UNION ALL
    SELECT 'P.CY.QW.00002',N'球碗','2010' UNION ALL
    SELECT 'P.CY.SG.00054',N'内牙','2011'
    )
    ,test1 AS 
    (
    SELECT ROW_NUMBER() OVER(PARTITION BY FSeries ORDER BY GETDATE()) AS ID
    ,* 
    FROM test
    )
    --SELECT * FROM test1
    SELECT [内牙],[球碗],[平螺母],FItemID
    FROM test1 AS A
    PIVOT (MAX(FNumber) FOR FSeries IN([内牙],[球碗],[平螺母]))p
      

  2.   

    pivot max聚合的时候只取最大,给记录加个id,每个id,再max的时候就一条条max,不是一组一组的max了
      

  3.   

    不过我还有问题想麻烦下你,如果加上一个数量
    FNumber                       FSeries  FItemID  数量
    M.QZ.AM.TL.00001   内牙  2010      1
    B.QZ.AM.TL.00024   内牙       2010        1
    B.QT.AM.TL.00022   内牙       2010      1
    P.BJ.PL.00008          平螺母     2010         1
    P.CY.QW.00001         球碗       2010            1
    P.CY.QW.00002        球碗       2010          1
    P.CY.SG.00054        内牙       2011                2
    显示效果如下:内牙              数量    球碗             数量        平螺母        数量    FItemID
    ----------------  ----    ---------      -------  ----------------   ----    -------
    B.QZ.AM.TL.00024    1     P.CY.QW.00002     1       P.BJ.PL.00008     1       2010
    B.QT.AM.TL.00022    1     P.CY.QW.00001     1       NULL                      2010
    M.QZ.AM.TL.00001    1     NULL                      NULL                      2010
    P.CY.SG.00054       2     NULL                      NULL                      2011我不知要怎么加?