2010-07-12 3 views
0

년/월/일 형식과 달리 날짜를 자르려고합니다.
내가 원하는 것은 모두를 계산하는 것입니다. 같은 것을 가지고, 매월 판매 및 매월 판매 된 SUV 차량의 모든 자동차 :sql 두 쿼리를 결합하여 날짜 자름

// counts cars  
select SellDate, count(*) 
from category 
where machineIdentification = 1 
GROUP BY SellDate 

// counts suv's 
select SellDate, count(*) 
from category 
where machineIdentification = 2 
GROUP BY SellDate 

별도로 각 쿼리를 실행하는 나에게 날짜 (Y/M/D/두 번째로 시간)의 목록을 제공하고 왜냐하면 단지 매월 총계를 보여주기 위해 1 차 또는 suv가 ​​정확한 시간을 판매했기 때문에 1 위를 SellDate로 그룹화하고 날자를 자르려고합니다. year.month, 판매 자동차의 두 번째 존재 # 및 세 번째 존재 인 첫 번째 열의와

2009-01 23 10 
2009-02 13 14 
2009-03 29 7 

:

는 내가 뭘하려고 쿼리를 결합하고 그래서 같은 값으로 끝입니다 SUV의의 # 당신이 미안, 내가 SQLLite에서 테스트 할 수 없습니다 (예를

은 "2010 년 7 월"할 수 있도록 내가 클라이언트 코드에서 년/월을 연결할 것

+0

? 사용중인 데이터 유형은 무엇입니까? –

+0

SQL Lite를 사용하고 날짜가 문자열로 저장됩니다. – anon

+0

'2009-03-04T-02 : 23 : 41.254'와 같은 전체 날짜에 대한 문자열이 있습니다. – anon

답변

2
select 
    date(SellDate, 'start of month'), 
    SUM (CASE machineIdentification = 1 THEN 1 ELSE 0 END) AS carcount , 
    SUM (CASE machineIdentification = 2 THEN 1 ELSE 0 END) AS suvcount 
from category 
where machineIdentification IN (1, 2) 
GROUP BY date(SellDate, 'start of month') 

을 판매하지만,이 ~해야한다. 그것은 SQLLite에 대한 포맷 하위 쿼리에서 노동 조합과 날짜의 형식을 포함 할 수

1

출력 년/월 형식)을 제외하고 가까이 :

SELECT SellDate, COUNT(CARS) AS Cars, COUNT(SUVS) AS SUVS 
FROM   
(SELECT STRFTIME('%Y-%m',SellDate) AS SellDate, 
     MachineIdentification AS CARS, null AS SUVS 
    FROM   Category 
    where machineIdentification = 1 
    UNION 
    SELECT STRFTIME('%Y-%m',SellDate) AS SellDate, 
     null AS CARS, MachineIdentification AS SUVS 
    FROM Category 
    where machineIdentification = 2 
) 
GROUP BY SellDate 
사용하고있는 RDBMS
관련 문제