2010-01-14 6 views
0

C#으로 사용자 정의보고 응용 프로그램을 만들고 일부 데이터를 집계해야합니다.SQL 또는 Linq로 데이터 비닝

간단하게 만들어 보겠습니다. 1 년 동안 10,000 개의 판매량이 있다고 가정 해 보겠습니다. 말, 월, 일 또는 시간별로 데이터를 저장하는 일반적인 방법이 필요합니다. 따라서 각 빈은 해당 기간 내의 모든 판매를 합산합니다.

누구도 SQL 또는 Linq에서 이와 같은 쿼리를 작성한 적이 있습니까?

전통적으로
+0

:-) 의미가 있는지, 그룹을 의미합니까? (자백, "데이터 바인딩 ..."에 대한 제목을 거의 편집했습니다.) p) –

+0

"데이터 바인딩 ..."이라는 제목을 편집했습니다. 죄송합니다 ... – M4N

+0

기다리시겠습니까? 이것은 데이터 바인딩에 관한 것이 아닙니다. Data Binning이란 무엇입니까? –

답변

0

, 그것은 것입니다 : 이제

(from s in Sales 
where s.SalesDate.Year = 2009 
&& s.SalesDate.Month = 2 
select s.Amount).Sum(); 

, 당신이 유연 같이 할 수 있습니다 : 나는 당신이 열거를 사용할 수 있는지 여부입니다 모르겠어요

.. GetData(TimePeriod period) 
{ 
return (from s in Sales 
    where 
    (
    //timeframe is enum of month, day, hour 
    period.TimeFrame == TimeFrame.Month 
    && s.SalesDate.Year == period.year 
    && s.SalesDate.Month == period.Month 
) 
    || 
    (
    period.TimeFrame == TimeFrame.Day 
    && s.SalesDate.Year == period.Year 
    && s.SalesDate.Month == period.Month 
    && s.SalesDate.Day == period.Day 
) 
    || 
    (
    .. 
) 
    select s); 

} 

있는 유일한 방법을 평가; 각 조건에 대해 논리 값을 추가 할 수 있습니다

bool isMonth = (period.TimeFrame == Timeframe.Month); 

하고 isMonth & & 대신 period.TimeFrame == Timeframe.Month 사용하도록 쿼리를 변경합니다.

최대한 유연하게 처리 할 수 ​​있습니다. 유일한 다른 방법은 데이터를 집계 각 레코드를 수동 루프에 심지어 더 유연하게, 그리고 그것을위한 일반적인 방법을 만들 수 있습니다 ...

희망 모두가 "빈"으로

+0

긍정, 나는 비열한 시간에 유사한 무엇인가했다 –

관련 문제