Создать хранимую процедуру, которая объединяет две таблицы результата в одну? - PullRequest
0 голосов
/ 03 октября 2019

Код ниже работает хорошо, но отображает результаты в двух разных таблицах. Я хотел бы отобразить результат хранимой процедуры в одной таблице.

USE [LSM2]
GO

-- StoredProcedure [dbo].[Proc_TotalBooks]

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[Proc_TotalBooks]
AS
BEGIN
    SELECT COUNT([Book ID]) AS TotalBooks FROM BookRegistration;
    SELECT COUNT([Book ID]) AS BorrowedBooks FROM Borrowing;    
END

enter image description here

Ответы [ 4 ]

1 голос
/ 03 октября 2019

Вы можете добиться этого, используя переменные

, ваш запрос будет выглядеть следующим образом

declare @A int
declare @B int

SELECT @A = COUNT([Book ID])  FROM BookRegistration; 
SELECT @B =COUNT([Book ID]) FROM Borrowing; 

SELECT @A AS TotalBooks, @B   AS BorrowedBooks

ИЛИ вы можете использовать FULL JOIN

SELECT COUNT(A.[Book ID]) AS TotalBooks, COUNT(B.[Book ID]) AS BorrowedBooks 
FROM BookRegistration A FULL JOIN BorrowedBooks B 
ON 1=2
0 голосов
/ 04 октября 2019

выберите (ВЫБЕРИТЕ СЧЕТЧИК ([Идентификатор книги]) ОТ РЕГИСТРАЦИИ КНИГ) КАК TotalBooks, (ВЫБЕРИТЕ СЧЕТЧИК ([Идентификатор книги]) ОТ ЗАЕМКИЕ) КАК ЗАПИСАННЫЕ КНИГИ

0 голосов
/ 03 октября 2019

Вы можете использовать union all:

SELECT 'TotalBooks', COUNT([Book ID]) AS total
FROM BookRegistration
UNION ALL
SELECT 'Borrowed', COUNT([Book ID])
FROM Borrowing;

Это создает две строки.

Или вложенные подзапросы для двух столбцов:

SELECT (SELECT COUNT([Book ID]) FROM BookRegistration) as TotalBooks,
       (SELECT COUNT([Book ID]) FROM Borrowing) as BorrowedBooks;  

Или переместить условияк предложению FROM:

SELECT t.TotalBooks, b.BorrowedBooks
FROM (SELECT COUNT([Book ID]) AS TotalBooks FROM BookRegistration
     ) t CROSS JOIN
     (SELECT COUNT([Book ID]) AS BorrowedBooks FROM Borrowing
     ) b  ;
0 голосов
/ 03 октября 2019

Я думаю, что это может вам помочь: два значения отображаются с описанием. Если вы хотите, вы можете использовать в предложении для создания новой таблицы также

 ALTER PROCEDURE [dbo].[Proc_TotalBooks]
            AS
            BEGIN
                SELECT 'Total Books' as Description,COUNT([Book ID]) AS TotalBooks  FROM BookRegistration;
            union all
                SELECT 'BorrowedBooks' as Description,COUNT([Book ID]) AS BorrowedBooks FROM Borrowing;    
            END
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...