PONo PartNo QTY KitPONo KitNo KitQTY RecordCount LineNo
PO1111-1 123K 11111 100 PO1111 123K 00000 10 3 1
PO1111-2 123K 22222 50 PO1111 123K 00000 10 3 2
PO1111-3 123K 33333 150 PO1111 123K 00000 10 3 3
PO8888-1 456K 11111 20 PO8888 456K 00000 1 2 1
PO8888-2 456K 22222 30 PO8888 456K 00000 1 2 2上面这个是我需要得到的查询结果但是我写的这个运行后得到的结果是错误的,RecordCount全变成5了。
SELECT SF.PONo, SF.PartNo, SF.QTY, SF.KitPONo, SF.KitNo, SF.KitQTY, (select count(KitPONo) from SF where KitPONo=SF.KitPONo) AS RecordCount, Right([SF].[PONO],Len([SF].[PONO])-InStr([SF].[PONO],"-")) AS LineNo
FROM SF;PONo PartNo QTY KitPONo KitNo KitQTY RecordCount LineNo
PO1111-1 123K 11111 100 PO1111 123K 00000 10 5 1
PO1111-2 123K 22222 50 PO1111 123K 00000 10 5 2
PO1111-3 123K 33333 150 PO1111 123K 00000 10 5 3
PO8888-1 456K 11111 20 PO8888 456K 00000 1 5 1
PO8888-2 456K 22222 30 PO8888 456K 00000 1 5 2

解决方案 »

  1.   

    PONo       PartNo        QTY     KitPONo    KitNo          KitQTY     RecordCount    LineNo 
    PO1111-1   123K 11111    100     PO1111     123K 00000     10         3              1 
    PO1111-2   123K 22222    50      PO1111     123K 00000     10         3              2 
    PO1111-3   123K 33333    150     PO1111     123K 00000     10         3              3 
    PO8888-1   456K 11111    20      PO8888     456K 00000     1          2              1 
    PO8888-2   456K 22222    30      PO8888     456K 00000     1          2              2 上面这个是我需要得到的查询结果 但是我写的这个运行后得到的结果是错误的,RecordCount全变成5了。 
    SELECT SF.PONo, SF.PartNo, SF.QTY, SF.KitPONo, SF.KitNo, SF.KitQTY, (select count(KitPONo) from SF where KitPONo=SF.KitPONo) AS RecordCount, Right([SF].[PONO],Len([SF].[PONO])-InStr([SF].[PONO],"-")) AS LineNo 
    FROM SF; PONo        PartNo        QTY     KitPONo    KitNo          KitQTY     RecordCount    LineNo 
    PO1111-1    123K 11111    100     PO1111     123K 00000     10         5              1 
    PO1111-2    123K 22222    50      PO1111     123K 00000     10         5              2 
    PO1111-3    123K 33333    150     PO1111     123K 00000     10         5              3 
    PO8888-1    456K 11111    20      PO8888     456K 00000     1          5              1 
    PO8888-2    456K 22222    30      PO8888     456K 00000     1          5              2
      

  2.   

    因子查询中的表与外面的表名相同,应该给子查询中的表或外面的表一个别名,改为
    SELECT SF.PONo, SF.PartNo, SF.QTY, SF.KitPONo, SF.KitNo, SF.KitQTY,
     (select count(KitPONo) from SF as a where KitPONo=SF.KitPONo) AS RecordCount, Right([SF].[PONO],Len([SF].[PONO])-InStr([SF].[PONO],"-")) AS LineNo 
    FROM SF; 
      

  3.   

    SELECT SF.PONo,SF.PartNo,SF.QTY,SF.KitPONo,SF.KitNo,SF.KitQTY,A.RecordCount,Right([SF].[PONO],Len([SF].[PONO])-CharIndex([SF].[PONO],'-')) AS Line_No
    FROM (SELECT COUNT(KitPONo) AS RecordCount,KitPONo FROM SY_ORDER_FILE GROUP BY KitPONo) AS A,SY_ORDER_FILE AS SF
    WHERE A.KitPONo=SF.KitPONo