语句:
SELECT LEFT(A.CheckOut_Time,10)
FROM OrderMstTbl A, OrderInfoTbl B
WHERE (A.Order_Status = '0' OR A.Order_Status = '3') AND A.Del_Flg = '0'
AND A.Order_ID = B.Order_ID AND A.Store_ID = B.Store_ID AND A.Store_ID = '01'
AND LEFT(A.CheckOut_Time,10)>='2010-07-01' AND LEFT(A.CheckOut_Time,10)<='2010-07-31'
GROUP BY LEFT(A.CheckOut_Time,10)查询结果为3条:
"2010-07-09"
"2010-07-12"
"2010-07-15"现在想求这个结果的条数,我用count
SELECT count(LEFT(A.CheckOut_Time,10))
FROM OrderMstTbl A, OrderInfoTbl B
WHERE (A.Order_Status = '0' OR A.Order_Status = '3') AND A.Del_Flg = '0'
AND A.Order_ID = B.Order_ID AND A.Store_ID = B.Store_ID AND A.Store_ID = '01'
AND LEFT(A.CheckOut_Time,10)>='2010-07-01' AND LEFT(A.CheckOut_Time,10)<='2010-07-31'
GROUP BY LEFT(A.CheckOut_Time,10)查询的结果貌似先求的count再group by
我只好再套一层查询如下:
SELECT COUNT(DATEDAY) FROM (
SELECT  LEFT(A.CheckOut_Time,10) AS DATEDAY
FROM OrderMstTbl A, OrderInfoTbl B
WHERE (A.Order_Status = '0' OR A.Order_Status = '3') AND A.Del_Flg = '0'
AND A.Order_ID = B.Order_ID AND A.Store_ID = B.Store_ID AND A.Store_ID = '01'
AND LEFT(A.CheckOut_Time,10)>='2010-07-01' AND LEFT(A.CheckOut_Time,10)<='2010-07-31'
GROUP BY LEFT(A.CheckOut_Time,10) ) AS B请问如果去掉外层的SELECT语句应该怎么写?

解决方案 »

  1.   

    加上distinctSELECT count(distinct LEFT(A.CheckOut_Time,10))
    FROM OrderMstTbl A, OrderInfoTbl B
    WHERE (A.Order_Status = '0' OR A.Order_Status = '3') AND A.Del_Flg = '0'
    AND A.Order_ID = B.Order_ID AND A.Store_ID = B.Store_ID AND A.Store_ID = '01'
    AND LEFT(A.CheckOut_Time,10)>='2010-07-01' AND LEFT(A.CheckOut_Time,10)<='2010-07-31'
    GROUP BY LEFT(A.CheckOut_Time,10)
      

  2.   

    不行呀
    结果如下:
    SELECT count(LEFT(A.CheckOut_Time,10))
    FROM OrderMstTbl A, OrderInfoTbl B
    WHERE (A.Order_Status = '0' OR A.Order_Status = '3') AND A.Del_Flg = '0'
    AND A.Order_ID = B.Order_ID AND A.Store_ID = B.Store_ID AND A.Store_ID = '01'
    AND LEFT(A.CheckOut_Time,10)>='2010-07-01' AND LEFT(A.CheckOut_Time,10)<='2010-07-31'
    GROUP BY LEFT(A.CheckOut_Time,10) 3
    1
    2SELECT count(distinct LEFT(A.CheckOut_Time,10))
    FROM OrderMstTbl A, OrderInfoTbl B
    WHERE (A.Order_Status = '0' OR A.Order_Status = '3') AND A.Del_Flg = '0'
    AND A.Order_ID = B.Order_ID AND A.Store_ID = B.Store_ID AND A.Store_ID = '01'
    AND LEFT(A.CheckOut_Time,10)>='2010-07-01' AND LEFT(A.CheckOut_Time,10)<='2010-07-31'
    GROUP BY LEFT(A.CheckOut_Time,10) 结果:
    1
    1
    1
      

  3.   

    如果你期望的结果是3,则改成如下无嵌套语句即可。SELECT count(distinct LEFT(A.CheckOut_Time,10))
    FROM OrderMstTbl A, OrderInfoTbl B
    WHERE (A.Order_Status = '0' OR A.Order_Status = '3') AND A.Del_Flg = '0'
    AND A.Order_ID = B.Order_ID AND A.Store_ID = B.Store_ID AND A.Store_ID = '01'
    AND LEFT(A.CheckOut_Time,10)>='2010-07-01' AND LEFT(A.CheckOut_Time,10)<='2010-07-31'