SQL SERVER 创建存储过程统计指定客户借阅、购买书籍的情况、数量
时间: 2023-08-01 21:10:48 浏览: 198
您可以使用以下 SQL Server 存储过程查询指定客户借阅、购买书籍的情况和数量:
```
CREATE PROCEDURE GetCustomerBookStats
@CustomerId INT
AS
BEGIN
-- 获取指定客户借阅的书籍情况和数量
SELECT
'Borrowed' AS [Type],
b.BookName,
COUNT(*) AS [Count]
FROM
BorrowedBooks bb
INNER JOIN Books b ON bb.BookId = b.BookId
WHERE
bb.CustomerId = @CustomerId
GROUP BY
b.BookName
UNION
-- 获取指定客户购买的书籍情况和数量
SELECT
'Purchased' AS [Type],
p.BookName,
COUNT(*) AS [Count]
FROM
PurchasedBooks pb
INNER JOIN Purchases p ON pb.PurchaseId = p.PurchaseId
WHERE
pb.CustomerId = @CustomerId
GROUP BY
p.BookName
END
```
该存储过程接受一个 `@CustomerId` 参数,用于指定客户的 ID。首先,它会查询 `BorrowedBooks` 和 `Books` 表,获取指定客户借阅的书籍情况和数量,并使用 `UNION` 运算符将其与下一个查询结果合并。接着,它会查询 `PurchasedBooks` 和 `Purchases` 表,获取指定客户购买的书籍情况和数量。最后,它会返回一个结果集,包含两个列:`Type` 和 `Count`。`Type` 列表示书籍的类型(借阅或购买),`Count` 列表示该类型的书籍数量。
阅读全文