MS Access CrossTab クエリを T-SQL に変換して SQL2000 または Linq-to-SQL で実行する方法を理解するのに本当に苦労しています。私が持っているのは、Access で次のようなクエリです。
そしてこれを生成します:
クエリは基本的に ItemID と StoreID でグループ化し、販売数量を合計しますが、Access の CrossTab クエリを使用すると、行ごとに一意の ItemID、StoreID ごとに列、および StoreID/ItemID の組み合わせごとに合計数量を取得できます。値として。
T-SQL 2000 でこれをどのように構築しますか? グループ化を使用して簡単な選択クエリを作成できますが、StoreID、ItemID、および Qty の 3 つの列にデータが表示されます。しかし、必要なのは、ItemID の列と、結果セット内のすべての StoreID の列です。
SELECT Trans.TranSID as StoreID, TransDetail.TranItemID as ItemID, SUM(TransDetail.Qty) AS TotalQtyForStore
FROM Trans INNER JOIN
TransDetail ON Trans.TranID = TransDetail.TranID INNER JOIN
Item ON TransDetail.TranItemID = Item.ItemID
WHERE (Trans.TranDate > CONVERT(DATETIME, '2005-01-01 00:00:00', 102)) AND (Trans.TranTypeID = 'so' OR
Trans.TranTypeID = 'ca') AND (Trans.TranStatus <> 'v') AND (Item.ItemClassID = 'RHM')
GROUP BY Trans.TranSID, TransDetail.TranItemID
これが生成されます:
しかし、実際に行う必要があるのは、上記の Access CrossTab クエリのように、StoreID 値が列になるようにこのデータを変換することです。