1

更新しました。

現在のクエリは次のようになります。

SELECT MAX([Ztel]) as [Ztel] , MAX([Beztel]) as [Beztel], MAX([Otwarte]) as [Otwarte], MAX([Otwartez]) as [Otwartez], [Windykator]
FROM   (
   SELECT COUNT(C.CaseDetailsId) AS [Ztel], NULL AS [Beztel], NULL AS [Otwarte], NULL as [Otwartez], 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 ALL
   SELECT NULL, COUNT(CaseDetailsId), NULL, NULL, 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
   UNION ALL
   SELECT NULL, NULL, COUNT(CaseDetailsId), NULL, U.FirstName + ' ' + U.LastName  AS [Windykator]
   FROM   CaseDetails  AS C
          JOIN Users   AS U
               ON  C.UserId = U.UserId
   WHERE  C.CaseStatusId = 1
   GROUP BY
          U.FirstName, U.LastName
   UNION ALL
   SELECT NULL, NULL, NULL, COUNT(C.CaseDetailsId), 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 = 1
  GROUP BY
          U.FirstName, U.LastName
   ) AS x
 GROUP BY [Windykator]

正常に動作しますが、データセットに 3 つの列を追加する必要があります。CaseDetailsView 列から取得: ClientNameShort、SetId、EndServiceDate。アイデア?または、別のサブクエリを作成する必要がありますか?


期待される結果: http://oi43.tinypic.com/2vdi5vk.jpg

使用するテーブル:

CaseDetailsView: SetId、ClientNameShort、UserId、EndServiceDate、CaseDetailsId、CaseStatusId - ケースの全体的なリスト
DebtorDetails: CaseDetailsId、DebtorDetailsId - 債務者の詳細
DebtorPhone: DebtorDetailsId - 債務者の電話番号のリスト。

Column3: CaseStatusId <> 2 および <> 6
の全体のケースの数 Column4: CaseStatusId <> 2 および <> 6 で DebtorPhone に存在する全体のケースの数 (したがって、債務者に電話番号を取得したケースの数)
Column5:未解決のケースの数 (CaseStatusId = 1) 全体
の列 6: 未解決のケースの数 (CaseStatusId = 1) であり、DebtorPhone に存在します (したがって、債務者の電話番号を取得します)。

4

1 に答える 1

2

すべてを1行で表示したいだけなら、これを試すことができます

SELECT MAX([Ztel]), MAX([Beztel]), MAX([Windykator])
FROM   (
         .....
   ) AS x

アップデート:

あなたのコメントに基づいて、あなたが探しているのはこれだと思います

SELECT MAX([Ztel]), MAX([Beztel]), [Windykator]
FROM   (
   SELECT COUNT(C.CaseDetailsId) AS [Ztel], NULL AS [Beztel], 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 ALL
   SELECT NULL, COUNT(CaseDetailsId), 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
   ) AS x
 GROUP BY [Windykator]
于 2013-09-26T13:24:07.567 に答える