2014-04-28 1 views
-1

저는 인도네시아에서 Fajar입니다. SQL Server에서 보고서를 작성하는 데 문제가 있습니다. 나는 다음과 같이 트랜잭션 테이블이 ,sql이 날의 이름을 가져 와서 계산합니다.

 
Date  | Trx_ID| Member_id| Invt_id |Branch_id 
01-01-2013 | tr001 | 0002  | invt002 |br001 
01-01-2013 | tr001 | 0002  | invt003 |br001 
01-01-2013 | tr001 | 0002  | invt004 |br001 
01-03-2013 | tr002 | 0001  | invt001 |br001 
01-03-2013 | tr002 | 0001  | invt003 |br001 
01-04-2013 | tr003 | 0003  | invt002 |br001 
01-04-2013 | tr003 | 0003  | invt004 |br001 
01-05-2013 | tr004 | 0002  | invt005 |br001 
01-05-2013 | tr004 | 0002  | invt006 |br001 
01-05-2013 | tr005 | 0005  | invt004 |br001 
01-05-2013 | tr005 | 0005  | invt005 |br001 
01-05-2013 | tr005 | 0005  | invt006 |br001 
01-06-2013 | tr006 | 0001  | invt001 |br001 
01-06-2013 | tr006 | 0001  | invt002 |br001 

이와 나는 MEMBER_ID하여이

 
Branch_id| weekdays | weekend|weekdays_Weekend 
br001 | 2  | 1  | 2 

의 평균 그룹과 같은 보고서를 만들려고합니다. 주말 거래를하는 회원이 평일에 계산하면 평일 거래를하는 회원도 주말에 계산하지만, 평일과 주말 거래를하는 회원은 평일 주간에 계산합니다. 주말은 토요일과 일요일 평일은 다음과 같습니다 : 월요일, 화요일, 수요일, 목요일, 금요일 내가

을하려고 할 때 회원이 1보다 더 많은 거래를하고 주말과 평일 일 경우 weekdays_weekend가

이 잘못된 쿼리입니다

 
select 
    max(branch_id) 
, count(DISTINCT trx_id) 
, sum(case when datename(dw,date) in ('Monday','Tuesday','Wednesday','Thursday','Friday') then f.trx_id else null end) AS 'WeekDays' 
, sum(case when datename(dw,date) in ('Saturday', 'Sunday') then 1 else 0 end) as 'Weekend' 
, sum(case when datename(dw,date) in ('Monday','Tuesday','Wednesday','Thursday','Friday','Saturday', 'Sunday') then 1 else 0 end) as 'Weekdays_weekend' 
from Transaction 

where branch_id = '14067' and convert (char(6), date, 112) = '201301' 
group by branch_id 

결과하지 trx_id와 그룹 내 영어 나쁜 경우 나에게 t을 도와주세요

 
Branch_id|weekdays|weekend|weekdays_weekend 
br001 | 7  | 7  | 0 

내가 미안 해요 MEMBER_ID 오 보고서를 작성

+0

어떤 문제가 발생했는지 자세히 설명해 줄 수 있습니까? 이미 가지고있는 SQL을 표시 할 수 있습니까? –

+0

SQL 서버가 oracle이 아닙니다. 오라클은 SQL 서버 – podiluska

+0

수정을위한 thaks podiluska – user3581398

답변

0

당신이 weekdays_weekend에 계산에 의해 meean하지만 주말 또는 평일에 총 트랜잭션을 확인하는 쿼리 bewlow입니다 whatr 그럼 내가 이해할 수없는

SELECT branch_id, 
     SUM(CASE WHEN DATEPART(dw,[Date]) NOT IN (1,7) THEN 1 ELSE 0 END) as weekdays, 
     SUM(CASE WHEN DATEPART(dw,[Date]) IN (1,7) THEN 1 ELSE 0 END) as weekend 
FROM tableName 
GROUP BY branch_id 

DATEPART() 함수는 추출 DW 요일 그것에 전달됩니다. 반환되는 값은 1에서 7, 토요일은 7, 일요일은 1

+0

하이 하산, 어때 1 개 이상 올 평일과 주말에 오는 회원? – user3581398

+0

죄송합니다. 이해할 수 없습니다 .. plz 더 명확하게 될 수 ... can ... –

관련 문제