Как объединить два выбора из одной таблицы, где один имеет GROUP BY, а другой имеет DISTINCT - PullRequest
1 голос
/ 07 октября 2010

Оба эти варианта работают индивидуально

SELECT  PONumber, 
        count(RequestNumber) as "InNumOfRequests", 
        sum(Amount) as "SumofAmounts" 
FROM tableView
GROUP BY PONumber  

SELECT DISTINCT PONumber, 
                (10 * ceiling((DATEDIFF(day,POApprovedDate,GETDATE()))/10)) 
                  AS "BINofDaysSincePOApproved"                      
FROM tableView

И я хочу закончить с:

PONumber   |  InNumOfRequests  |  SumofAmounts  |  BINofDaysSincePOApproved  
PO1        |  2                |  100           |  180
PO2        |  1                |  50            |  179   

tableView выглядит так:

RequestNumber | PONumber | Amount  |  POApproved Date   
1             | PO1      | 100.00  |  2010-01-01  
2             | PO1      | 100.00  |  2010-01-01  
3             | PO2      |  50.00  |  2010-01-02

обратите внимание, что PO1 на самом деле является PO для 2 запросов, поэтому POApproved Data и Amount для этих 2 запросов одинаковы.

Это кажется простым, но из книги, которую я использую (Язык SQL), я не могу понять это.
Помощь: (
Alex

Ответы [ 2 ]

2 голосов
/ 07 октября 2010
SELECT *
   FROM (
         SELECT PONumber, count(RequestNumber) as "InNumOfRequests", sum(Amount) as "SumofAmounts"
           FROM tableView
          GROUP BY PONumber
        ) a,
        (
         SELECT DISTINCT PONumber, (10 * ceiling((DATEDIFF(day, POApprovedDate, GETDATE()))/10)) AS "BINofDaysSincePOApproved"
           FROM tableView
        ) b
 WHERE a.PONumber = b.PONumber
0 голосов
/ 07 октября 2010

Если дата ВСЕГДА равна каждому номеру PON, можно поставить первый выбор. Функция MIN (MIN (POApprovedDate)) - это то, почему группа, а затем должна использовать агрегатные функции в полях.

SELECT  PONumber, 
        count(RequestNumber) as "InNumOfRequests", 
        sum(Amount) as "SumofAmounts",
        (10 * ceiling((DATEDIFF(day,MIN(POApprovedDate),GETDATE()))/10)) 
         AS "BINofDaysSincePOApproved" 
FROM tableView
GROUP BY PONumber 
...