2016-12-03 98 views
0

我試圖編寫一個顯示3個不同列的查詢。活動類別名稱,總收入和客戶數量。我的下面的代碼顯示了那些列(以及兩個不同的價格,學生和常規)。我想要做的是編寫一個查詢,根據客戶類型*適當的客戶類型(學生或常規)計算收入。我似乎無法編寫查詢來區分2種不同的客戶類型和適當的價格到「收入」列中。任何幫助將非常感激!試圖將兩個不同的屬性合併到一個列中

SELECT ACTIVITY_NAME           AS CLASS, 
     STUDENT_PRICE, 
     REGULAR_PRICE, 
     Count(CUSTOMER.CUSTOMER_TYPE)       AS NUM_CUST, 
     Count(CUSTOMER.CUSTOMER_TYPE) * ACTIVITY.STUDENT_PRICE AS REVENUE 
FROM ACTIVITY 
     JOIN ACTIVITY_BOOKING 
     ON ACTIVITY.ID = ACTIVITY_BOOKING.ACTIVITY_ID 
     JOIN CUSTOMER 
     ON ACTIVITY_BOOKING.CUSTOMER_ID = CUSTOMER.ID 
GROUP BY ACTIVITY_NAME, 
      STUDENT_PRICE, 
      REGULAR_PRICE 
ORDER BY ACTIVITY.ACTIVITY_NAME 
+0

歡迎堆棧溢出!看起來你正在尋求作業幫助。雖然我們本身沒有任何問題,但請觀察這些[應做和不應該](http://meta.stackoverflow.com/questions/334822/how-do-i-ask-and-answer-homework-questions/338845#338845),並相應地編輯您的問題。 –

回答

0

我想你需要SUMCOUNT,你可以總結條件值:

SELECT ACTIVITY_NAME           AS CLASS, 
     STUDENT_PRICE, 
     REGULAR_PRICE, 
     Count(CUSTOMER.CUSTOMER_TYPE)       AS NUM_CUST, 
     Sum (case when CUSTOMER.CUSTOMER_TYPE = 'Student' then STUDENT_PRICE when CUSTOMER.CUSTOMER_TYPE = 'Regular' then REGULAR_PRICE else 0 end) AS REVENUE 
FROM ACTIVITY 
     JOIN ACTIVITY_BOOKING 
     ON ACTIVITY.ID = ACTIVITY_BOOKING.ACTIVITY_ID 
     JOIN CUSTOMER 
     ON ACTIVITY_BOOKING.CUSTOMER_ID = CUSTOMER.ID 
GROUP BY ACTIVITY_NAME, 
      STUDENT_PRICE, 
      REGULAR_PRICE 
ORDER BY ACTIVITY.ACTIVITY_NAME 
+0

嘿,這工作完美!謝謝!我只是在瞭解如何正確寫出'case'和'if-then'的陳述,所以這是一個巨大的幫助!只有問題我現在與此同時顯示NUM_CUST列,即使一行顯示0(無客戶),它會顯示在收入列中的正常價格。如何在NUM_CUST顯示0時在收入中顯示0? –

+0

@ D.S。我已經編輯了病例陳述,現在它應該顯示0.我認爲客戶是studen或常規,並且不可能有0. Cheers – Kacper

+0

非常感謝,我在你評論之前就已經計算出來了。但你的更清潔;)。你是最好的,有一個偉大的。 –

相關問題