我被要求創建一個報告,顯示單個成員的交易數據並顯示他們多久進行一次相同類型的交易。基於交易次數的MySql數據透視表
例如:
鮑勃從組織X購買5個香蕉同時對10 不同場合/交易和Bob從同一組織 已上20個不同的 場合/交易購買3個香蕉一次。
數據庫包含的交易數據以這種形式
|TransactionID | Organization | MemberNumber | ItemID| QuantityPurchased
我現在有,在下面的格式創建一個臨時表的查詢。
|Organization | MemberNumber | ItemID | QuantityItemsPurchased | QuantityOfTransactions
----------------------------------------------------------------------------------------
|Company X | 2044 | B2 | 5 | 10
|Company X | 2044 | B2 | 3 | 20
|Company Y | 2035 | A3 | 5 | 5
我被要求創建以下格式(報告的格式不爲我的辯論),其中每個數列是交易與銷售的項目的是數量和價值的報告每一行是銷售該項目數量的交易數量。
|Organization | MemberNumber | ItemID |1 |2 |3 |4 |5 |6+ |
-----------------------------------------------------------------
|Company X | 2044 | B2 |0 |0 |20 |0 |10 |0 |
|Company Y | 2035 | A3 |0 |0 |0 |0 |5 |0 |
我不知道如何編寫一個查詢,可以進行排序quantityOfItemsPurchased成單獨列,顯示QuantityOfTransactions值。
我試着寫了一個類似於下面的查詢,但它不適用於我,因爲它只給出所有數字列下的值1或0,而不是實際的QuantityOfTransactions值。
Select Organization, MemberNumber, ItemId,
count(Case when tempTable.quantityOfItemsPurchased = 1 then tempTable.QuantityOfTransactions end) as '1',
count(Case when tempTable.quantityOfItemsPurchased = 2 then tempTable.QuantityOfTransactions end) as '2',
count(Case when tempTable.quantityOfItemsPurchased = 3 then tempTable.QuantityOfTransactions end) as '3',
count(Case when tempTable.quantityOfItemsPurchased = 4 then tempTable.QuantityOfTransactions end) as '4',
count(Case when tempTable.quantityOfItemsPurchased = 5 then tempTable.QuantityOfTransactions end) as '5',
count(Case when tempTable.quantityOfItemsPurchased >= 6 then tempTable.QuantityOfTransactions end) as '6+'
from TempTable group by Organization, MemberNumber, ItemId
這種事情是在應用程序代碼中那麼容易。 :-( – Strawberry
草莓,同意這樣會更容易一些,但我們試圖將這些報告與應用程序分開,因爲銷售/管理總是要求修改報告,而且不得不不斷地發佈新版本每次發生這種情況,不幸的是我的數據庫知識是有限的,但它是這樣的, – Jcross