В чем разница между IORef и MVar?

У меня небольшие проблемы с пониманием основной разницы между типом IORef и типом MVar в Haskell. Может ли кто-нибудь мне с этим помочь? Кажется, они решают одну и ту же проблему. Кажется, что MVar ориентирован на многопоточность, но IORef имеет функцию atomicModifyIORef.

Спасибо! Продукт ProductID ProductName 1 Cycle 2 Scooter 3 Car CustomerID CustomerName 101 Ronald 102 Michelle ...

У меня есть три таблицы:
Продукт

ProductID   ProductName  
1           Cycle  
2           Scooter  
3           Car  

Клиент

CustomerID  CustomerName  
101         Ronald  
102         Michelle  
103         Armstrong  
104         Schmidt  
105         Peterson   

Транзакции

TID   ProductID CustomerID TranDate   Amount  
10001 1         101        01-Jan-11  25000.00  
10002 2         101        02-Jan-11  98547.52  
10003 1         102        03-Feb-11  15000.00  
10004 3         102        07-Jan-11  36571.85  
10005 2         105        09-Feb-11  82658.23  
10006 2         104        10-Feb-11  54000.25  
10007 3         103        20-Feb-11  80115.50  
10008 3         104        22-Feb-11  45000.65  

Я написал запрос для группировки такие транзакции:

SELECT P.ProductName AS Product,  
       C.CustName AS Customer,  
       SUM(T.Amount) AS Amount  
FROM   Transactions AS T  
       INNER JOIN Product AS P  
            ON  T.ProductID = P.ProductID  
       INNER JOIN Customer AS C  
            ON  T.CustomerID = C.CustomerID  
WHERE T.TranDate BETWEEN '2011-01-01' AND '2011-03-31'   
GROUP BY  
       P.ProductName,  
       C.CustName  
ORDER BY  
       P.ProductName  

, что дает следующий результат:

Product Customer   Amount  
Car     Armstrong  80115.50  
Car     Michelle   36571.85  
Car     Schmidt    45000.65  
Cycle   Michelle   15000.00  
Cycle   Ronald     25000.00  
Scooter Peterson   82658.23  
Scooter Ronald     98547.52  
Scooter Schmidt    54000.25  

Мне нужен результат запроса в форме MATRIX, например:

Customer  |------------ Amounts ---------------         
Name      |Car      Cycle     Scooter  Totals
Armstrong  80115.50 0.00      0.00     80115.50  
Michelle   36571.85 15000.00  0.00     51571.85  
Ronald     0.00     25000.00  98547.52 123547.52  
Peterson   0.00     0.00      82658.23 82658.23  
Schmidt    45000.65 0.00      54000.25 99000.90  

Пожалуйста, помогите мне получить вышеуказанный результат в SQL Server 2005. Использование нескольких представлений или даже временных столы мне подходят.

9
задан Lieven Keersmaekers 7 March 2011 в 08:09
поделиться