0

私はそのような2つのクエリを得ました:

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

e

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

これら2つの結果を1つのテーブルにグループ化する必要があるため、それらを接続するのが最善だと思いますが、その方法がわかりません。

クエリは、2 つのケースで行をカウントする必要があります。1) 全体 2) 別のテーブルに指定された行が存在する場合

したがって、一般的に->電話番号(DebtorPhones)の有無にかかわらず、すべての従業員(Users)のケース数(CaseDetailsId)をカウントする必要があります

4

2 に答える 2

0

以下のクエリは、ユニオンを使用して 2 つのクエリから 1 つのレコード セットを取得します。selectの上に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  
于 2013-09-26T11:16:53.063 に答える
0

@Pratik Kajeはそうではありません。[Z tel] と [Windykator] の 2 つの列のみが表示されます。

私は少しテストし、そのようなクエリで終了しました:

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
于 2013-09-26T11:46:07.173 に答える