Tsql 带并集的NULL

Tsql 带并集的NULL,tsql,Tsql,更新 当前查询如下所示: 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 [Otwarte

更新

当前查询如下所示:

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。思想?或者我应该做另一个子查询

预期成果:

使用的表格:

CaseDetailsView:SetId、ClientNameShort、UserId、EndServiceDate、CaseDetailsId、CaseStatusId-案例的总体列表 DebtorDetails:CaseDetailsId,DebtorDetailsId-债务人的详细信息 DebtorPhone:DebtorDetailsId-债务人电话号码列表

第3列:CaseStatusId为2和6的总体案例数 第4列:CaseStatusId为2和6且存在于DebtorPhone中的总案例数,因此我们向debtor获取电话号码的案例数 第5列:CaseStatusId为1的未结案例总数
第6列:CaseStatusId=1且存在于DebtorPhone中的未结案例数,因此我们有debtor的电话号码

如果您只想在一行中显示所有内容,您可以尝试以下方法

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]

是否要将行数据显示为列?我希望结果显示为用户15075;用户2 46 78;ETC仅显示一行。重点是我需要显示几行,因为结果包含multiply Users和numbers updated first post。请看一看空闲时间。@glaeran,看起来您需要更改查询数据的方式,而不是将所有数据合并为一列。您可以发布您的表结构并在另一个问题中期望输出吗?请将您的原始问题保留在这里,以便下一步人们能够理解该问题。我是将其张贴在这里还是提出另一个问题;用附加信息更新了第一篇帖子,