2016-06-02 2 views
0

3 열로 보고서를 생성하려고하는데 모두 "로컬 상점", "ID", "TotalSpend", "멤버 카드 번호"가 포함 된 동일한 테이블에서 왔습니다.sql Lite 용 SQL 쿼리

Store  Totalnumofmembers TotalSpendforall 
-----  ------------------ --------------- 
Store A  1500     $100.50 
Store B  2000     $500.00 
Store C  400     $300.00 

그리고이 쿼리를 실행하려고 할 때의 내가 원하는 나에게 결과를 제공하지 :

SELECT "Local Store", 
    (SELECT count(ID) FROM ListMembers WHERE Id=a.Id and "Member Card Number" is not null) AS totalnumofmembers, 
    (SELECT sum("total spend") FROM ListMembers WHERE Id=a.Id) AS totalspendforall FROM ListMembers a 
GROUP BY "Local Store" 

다른 방법이 떨어져 자체 조인을 사용에서 거기를? 고마워요

+1

쿼리가 반환하는 내용과 예상되는 결과는 무엇입니까 게시 할 수 있습니까? – istovatis

답변

0

한 번의 쿼리에서이 작업을 수행하려는 경우 CASE 문을 사용하면 총 지출 합계와 같은 쿼리에서 유효한 카드 번호를 가진 회원의 조건부 계산을 수행 할 수 있습니다. 하위 쿼리를 가진 괜찮다면

SELECT `Local Store`, 
    COUNT(CASE WHEN `Member Card Number` IS NOT NULL THEN 1 ELSE 0 END) AS totalnumofmembers, 
    SUM(`total spend`) AS totalspendforall 
FROM ListMembers 
GROUP BY `Local Store` 

는, 당신은 다음과 같은

SELECT t1.`Local Store`, t1.totalnumofmembers, t2.totalspendforall 
FROM 
(
    SELECT `Local Store`, COUNT(*) AS totalnumofmembers 
    FROM ListMembers 
    WHERE `Member Card Number` IS NOT NULL 
    GROUP BY `Local Store` 
) t1 
INNER JOIN 
(
    SELECT `Local Store`, SUM(`total spend`) AS totalspendforall 
    FROM ListMembers 
    GROUP BY `Local Store` 
) t2 
    ON t1.`Local Store` = t2.`Local Store` 
+0

빠른 응답을 가져 주셔서 감사합니다. 다른 다른 조인을 시도했습니다. "회원 수", 총액 (b. "총 지출액")으로 수 (a.Id)를 선택하십시오. ListMembers에서 에 가입하십시오 ListMembers b on b.id = a.id 여기서 a . "회원 카드 번호"가 null이 아닙니다. a. "Local Store"위의 사항을 시도해 보았습니다. 숫자가 컸기 때문에 내가하는 일이라고 생각합니다. 논리가 맞습니까? 죄송합니다 어떻게 내 의견에 휴식을 넣을 수 있습니다 때마다 다음 라인에 가서 메시지가 게시됩니다 : ( – ll2016

+0

... 그리고 ... 여전히 문제가 있습니까? 당신은 쿼리를 게시 하시겠습니까 시도 했습니까? –

+0

다른 질문 이제 6 월 1 일 이후에 회원 가입을 보여주는 다른 열을 추가하고 싶습니다. 총 숫자 열에는 처음부터 모든 멤버가 포함되므로 다른 전체 멤버 열과는 다릅니다. 열은 june 이후 1 번째로 등록하는 사용자 여야합니다. 다음 쿼리를 시도했는데 새 열의 결과가 잘못 되었습니까? – ll2016

0

고맙습니다을 시도 할 수 있습니다. 그것을 해결할 수 있었다. SQL lite가 oracle과 같은 기능을 사용하지 않는다는 것을 깨닫지 못했습니다. 문제 없다. 고마워, 모두.