2013-09-26 5 views
0

я получил два таких запросов:Подключение двух запросов в один

SELECT 
count (C.CaseDetailsId) as [Z telefonem] 
,U.FirstName + ' ' + U.LastName as [Windykator] 
from CaseDetails as C 
join DebtorDetails as D on C.CaseDetailsId = D.CaseDetailsId 
join Users as U on C.UserId = U.UserId 
where D.DebtorDetailsId in 
(SELECT DebtorDetailsId from DebtorPhone 
where (IsValid = 'True') or (IsDefault = 'True')) 
and C.CaseStatusId <> 2 and C.CaseStatusId <> 6 group by U.FirstName,U.LastName 

е

и

SELECT 
count (CaseDetailsId) as [Beztel] 
,U.FirstName + ' ' + U.LastName as [Windykator] 
from CaseDetails as C 
join Users as U on C.UserId = U.UserId 
where 
C.CaseStatusId <> 2 and C.CaseStatusId <> 6 group by U.FirstName,U.LastName 

Мне нужно сгруппировать результаты этих двух в 1 таблицу, так что я предполагаю, что это было бы лучше всего связать их, но я понятия не имею, как это сделать.

Запрос должен подсчета строк в двух случаях 1) общие 2), где существует указанную строку в другой таблице

Таким образом, в общем -> мне нужно подсчитать количество случаев (CaseDetailsId) для каждого employeer (Пользователи) с номером телефона и без него (DebtorPhones)

ответ

0

Ниже запрос предоставит вам один набор записей из двух запросов с использованием объединения. Вы можете добавить инструкцию insert выше, чтобы вставить ее в требуемую таблицу.

SELECT Count (C.casedetailsid)  AS [Z telefonem], 
       U.firstname + ' ' + U.lastname AS [Windykator] 
     FROM casedetails AS C 
       JOIN debtordetails AS D 
       ON C.casedetailsid = D.casedetailsid 
       JOIN users AS U 
       ON C.userid = U.userid 
     WHERE D.debtordetailsid IN (SELECT debtordetailsid 
            FROM debtorphone 
            WHERE (isvalid = 'True') 
              OR (isdefault = 'True')) 
       AND C.casestatusid <> 2 
       AND C.casestatusid <> 6 
     GROUP BY U.firstname, 
        U.lastname 
    Union 
    SELECT Count (casedetailsid)   AS [Z telefonem], 
      U.firstname + ' ' + U.lastname AS [Windykator] 
    FROM casedetails AS C 
      JOIN users AS U 
      ON C.userid = U.userid 
    WHERE C.casestatusid <> 2 
      AND C.casestatusid <> 6 
    GROUP BY U.firstname, 
       U.lastname 
0

@Pratik Kaje не очень. Это показывает только 2 колонки - [Z TEL] и [Windykator]

Я испытал немного и заканчивались таким запросом:

SELECT 
[Windykator] 
,[Beztel] 
,[Z telefonem] 
from 
(SELECT 
count (C.CaseDetailsId) as [Z telefonem] 
,NULL as [Beztel] 
,NULL as [Windykator] 
from CaseDetails as C 
join DebtorDetails as D on C.CaseDetailsId = D.CaseDetailsId 
join Users as U on C.UserId = U.UserId 
where D.DebtorDetailsId in 
(SELECT DebtorDetailsId from DebtorPhone 
where (IsValid = 'True') or (IsDefault = 'True')) 
and C.CaseStatusId <> 2 and C.CaseStatusId <> 6 
group by U.FirstName, U.LastName 
UNION ALL 
SELECT 
NULL 
,count (CaseDetailsId) as [Beztel] 
,NULL 
from CaseDetails as C 
join Users as U on C.UserId = U.UserId 
where 
C.CaseStatusId <> 2 and C.CaseStatusId <> 6 
group by U.FirstName, U.LastName 
UNION ALL 
SELECT 
NULL 
,NULL 
,U.FirstName + ' ' + U.LastName 
from CaseDetails as C 
join Users as U on C.UserId = U.UserId 
where 
C.CaseStatusId <> 2 and C.CaseStatusId <> 6 
group by U.FirstName, U.LastName 
) as x 

почти идеально, однако результаты не сгруппированных. Таким образом, он показывает результаты с

NULLS NULLS [Bez tel] 
NULLS [Z tel] NULLS 
[Windykator] NULLS NULLS 
Смежные вопросы