2013-07-31 1 views
0

내 프로젝트에서 긴 sql 쿼리를 보는 대신 간단한 문제 예제를 보여 드리겠습니다. 내가 달성하고자하는 모든 4 패키지이 DeliveryAddressID을 얻을하지만 여전히 유지하는 것입니다GROUP BY 문의 모든 데이터보기

http://prntscr.com/1iksoe

:

Select DeliveryAddressID, PickupDate, TotalWeight, count(DeliveryAddressID) AS Packages 
From DeliveryDB 
Where Date1 >= '10-12-2013' AND Date2 <= '15-12-2013' 
Group By PickupDate, DeliveryAddressID 

내 결과가 될 것입니다 뭔가 같은 : 뭔가처럼

내 예입니다 총 숫자. 이것은 다음과 같이 될 것입니다. 내가 예상대로 결과를 원하는 것은

:

http://prntscr.com/1iksr7

이런 식으로 내가 각 패키지에 대해 바코드를 추적하고 또한 더 추적 할 수 할 수 있기 때문에이 작업을 수행 할 이유는 세부.

+1

예상되거나 실제 결과에 이미지를 사용하지 마십시오. 제대로 포맷하려면 코드 버튼을 사용하십시오. 세 가지 장점 : 1. hoster에있는 이미지가 삭제 된 경우에도이 질문은 의미가 있습니다. 2. 우리는 gt-sample 데이터에 SQL-fiddle로 붙여 넣을 수 있습니다. 3. 알 수없는 링크를 클릭 할 필요가 없습니다. –

답변

2

:-)

환호는 대부분의 데이터베이스에서는이 사용 윈도우 기능을 수행 할 수 있습니다

Select DeliveryAddressID, PickupDate, TotalWeight, 
     count(DeliveryAddressID) over (partition by PickupDate, DeliveryAddressID) AS Packages 
From DeliveryDB 
Where Date1 >= '10-12-2013' AND Date2 <= '15-12-2013'; 

이는 네 개의 라인 전체를 반환합니다.

편집 :

당신은 같은 방법으로 (원래의 질문의 일부가되지 않은) TotalWeight을 처리 할 수 ​​

Select DeliveryAddressID, PickupDate, 
     count(DeliveryAddressID) over (partition by PickupDate, DeliveryAddressID) AS Packages, 
     CEILING(SUM(CASE When (Weight <> 0 AND Volumen <> 0) AND Weight >= (Volumen * @zeroVoluFac) 
         Then Weight 
        end) over (partition by PickupDate, DeliveryAddressID) 
      ) as TotalWeight 
From DeliveryDB 
Where Date1 >= '10-12-2013' AND Date2 <= '15-12-2013'; 
+0

감사합니다. ,하지만 totalWeight는 어떨까요? 난 그냥 파티션을 했어 내 데이터베이스가 매우 긴로드 모드로 간 것 같습니다. totalWeight는 case 문의 결과입니다. 예를 들어 CEILING (SUM (케이스 (무게! = 0 및 Volumen! = 0) 및 무게> = (Volumen * @ zeroVoluFac) 무게) "AS TotalWeight – MishMish

+0

고마워요, 당신의 대답을 받아 들일 것입니다, 나는 밖으로 시도합니다 여기에서 나는 다시 일할 수 있습니다 :) ^^ – MishMish

1

나는 확실히 그렇게 할 수 있지만 이후 전체 라인을 받아 들일 것 세부 대신의 첫 번째 N 라인에 제로과 같이 최종 합계 :

IdCode  Weight  PickupDate     
    ----------- ----------- ------------------------- 
    12345  5   2013-01-07 00:00:00.0  
    12345  10   2013-01-07 00:00:00.0  
    12345  15   2013-01-07 00:00:00.0  
    12345  20   2013-01-07 00:00:00.0  
    (4 rows) 

    Sum(Weight) Count(IdCode) 
    ----------- ------------- 
    50   4    

이 당신에게 어떤 사용의의 경우, SQL I 유 SED는

Select IdCode, Weight, PickupDate 
From DeliveryDB 
Group By PickupDate, IdCode 
ORDER BY PickupDate, IdCode 
COMPUTE sum(Weight), count(IdCode) by PickupDate, IdCode 

COMPUTEGroup By의 휴식에서 합계 또는 기타 집계을 제공합니다 (비 일치하는 열 이름에 대한 죄송)이었다.

+0

예를 들어 보겠습니다. 예를 들어 보겠습니다. – MishMish

+0

예를 들어 본 것처럼 보이게 만들었습니다. 모든 것이 0이고 마지막 패키지가 모든 데이터를 합친 것과 같습니다. 나는 또한 당신이 내가 가장 낮은 ID 번호 또는 가장 높은 ID 번호를 가진 패키지를 선택할 수 있다는 것을 이해합니다. 모든 데이터를 볼 수있는 패키지입니다. – MishMish