[英]Convert MS Access count and pivot query into SQL Server
我有雜貨店數據庫。 我想計算收據上每個類別有多少產品。
表是:
Transactions
(id_transaction,數量,id_receipt,id_product) Receipts
(id_receipt,日期,id_store,id_customer) Products
(id_product,product_name,price,id_prod_cat) Product_Categories
類別(id_prod_cat,類別名稱) 所需的輸出與樣本數據:
ID_RECEIPT | desserts | meat | juices | baker products| canned |
-------------------------------------------------------------------|
1 | 0 | 2 | 1 | 3 | 0 |
2 | 1 | 0 | 3 | 1 | 0 |
--------------------------------------------------------------------
我已經嘗試過此查詢,但沒有成功。
TRANSFORM Nz(Count(dbo.Transactions.quantity), 0) AS Product Count
SELECT dbo.Receipts.id_receipt
FROM dbo.Product_Categories
INNER JOIN (dbo.Receipts
INNER JOIN (dbo.PRODUCTS
INNER JOIN dbo.TRANSACTIONS ON dbo.PRODUCTS.id_product = dbo.TRANSACTIONS.id_product)
ON dbo.RECEIPTS.id_receipt = dbo.TRANSACTIONS.id_receipt)
ON dbo.Product_Categories.id_prod_cut = dbo.Products.id_product
GROUP BY
dbo.Receipts.id_receipt
PIVOT
dbo.Product_Categories.category_name
本質上,這是經典的轉置查詢。 考慮以下應與大多數RDMS兼容的SQL。 對於MS Access,您將使用IIF()
而不是CASE WHEN
(和聯接中的括號)。 使用Transform
的交叉表查詢主要是MS Access類型,而Pivot()
主要是SQL Server函數。 但是,以下內容應可跨數據庫方言使用。
SELECT
dbo.Receipts.id_receipt,
Count(CASE WHEN dbo.Product_Categories.category_name='desserts'
THEN dbo.Transactions.quantity END) As [desserts],
Count(CASE WHEN dbo.Product_Categories.category_name='meat'
THEN dbo.Transactions.quantity END) As [meat],
Count(CASE WHEN dbo.Product_Categories.category_name='juices'
THEN dbo.Transactions.quantity END) As [juices],
Count(CASE WHEN dbo.Product_Categories.category_name='baker products'
THEN dbo.Transactions.quantity END) As [baker products],
Count(CASE WHEN dbo.Product_Categories.category_name='canned'
THEN dbo.Transactions.quantity END) As [canned]
FROM dbo.Product_Categories
INNER JOIN dbo.Receipts
INNER JOIN dbo.PRODUCTS
INNER JOIN dbo.TRANSACTIONS ON dbo.PRODUCTS.id_product = dbo.TRANSACTIONS.id_product
ON dbo.RECEIPTS.id_receipt = dbo.TRANSACTIONS.id_receipt
ON dbo.Product_Categories.id_prod_cut = dbo.Products.id_product
GROUP BY dbo.Receipts.id_receipt ;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.