TSQL-是否有单独的查询并排显示数据?

TSQL-是否有单独的查询并排显示数据?,tsql,Tsql,这是一种奇怪的请求,但有可能让单独的TSQL查询在不使用外部联接的情况下并排显示数据吗?我想知道我是否把这件事搞得很复杂 以下是我想要做的: 我有12个查询,它们会给我一个记录计数,我希望它们,而不是堆叠在一起,从右到左显示记录,就像它们在一个表中一样 因此,从这些查询中: SELECT COUNT(*) AS 'INTERNET JAN 12' FROM dbo.CONTACT AS AA JOIN dbo.Document AS BB ON AA.ACCOUNTNO = BB.A

这是一种奇怪的请求,但有可能让单独的TSQL查询在不使用外部联接的情况下并排显示数据吗?我想知道我是否把这件事搞得很复杂

以下是我想要做的:

我有12个查询,它们会给我一个记录计数,我希望它们,而不是堆叠在一起,从右到左显示记录,就像它们在一个表中一样

因此,从这些查询中:

SELECT COUNT(*) AS 'INTERNET JAN 12'
  FROM dbo.CONTACT AS AA
  JOIN dbo.Document AS BB
  ON AA.ACCOUNTNO = BB.ACCOUNTNO
 WHERE SOURCE IN ('INTERNET', 'EBAY', 'MSN', 'BING', 'GOOGLE', 'YAHOO')
   AND KEY1 = 'EA'
   AND MONTH(BB.Date) = 1
   AND  YEAR(BB.Date) = 2012

SELECT COUNT(*) AS 'INTERNET FEB 12'
  FROM dbo.CONTACT AS AA
  JOIN dbo.Document AS BB
  ON AA.ACCOUNTNO = BB.ACCOUNTNO
 WHERE SOURCE IN ('INTERNET', 'EBAY', 'MSN', 'BING', 'GOOGLE', 'YAHOO')
   AND KEY1 = 'EA'
   AND MONTH(BB.Date) = 2
   AND  YEAR(BB.Date) = 2012

 ...

SELECT COUNT(*) AS 'INTERNET DEC 12'
  FROM dbo.CONTACT AS AA
  JOIN dbo.Document AS BB
  ON AA.ACCOUNTNO = BB.ACCOUNTNO
 WHERE SOURCE IN ('INTERNET', 'EBAY', 'MSN', 'BING', 'GOOGLE', 'YAHOO')
   AND KEY1 = 'EA'
   AND MONTH(BB.Date) = 12
   AND  YEAR(BB.Date) = 2012 
我希望结果集如下所示:

 INTERNET JAN 12     INTERNET FEB 12     ...     INTERNET DEC 12
 12                  25                          31
 INTERNET JAN 12
 12

 INTERNET FEB 12
 25

 ...

 INTERNET DEC 12
 31
而不是像这样:

 INTERNET JAN 12     INTERNET FEB 12     ...     INTERNET DEC 12
 12                  25                          31
 INTERNET JAN 12
 12

 INTERNET FEB 12
 25

 ...

 INTERNET DEC 12
 31

这是否可以在不添加其他字段和执行外部联接的情况下实现?最终的结果是在Excel电子表格中将其作为查询,供最终用户自动更新。

使用临时表作为中间结果集来创建可以求和的数据如何?如果您的TSQL是最新的,并且来自Microsoft,则CTE将执行以下操作:

;
WITH temp (Jan12, Feb12, /* ... */ ) AS (
SELECT 
    -- Jan 12
    CASE MONTH(BB.Date)
        WHEN 1 THEN 1 
        ELSE 0 
    END,
    -- Feb 12
    CASE MONTH(BB.Date)
        WHEN 2 THEN 1 
        ELSE 0 
    END
  FROM dbo.CONTACT AS AA
  JOIN dbo.Document AS BB
  ON AA.ACCOUNTNO = BB.ACCOUNTNO
 WHERE SOURCE IN ('INTERNET', 'EBAY', 'MSN', 'BING', 'GOOGLE', 'YAHOO')
   AND KEY1 = 'EA'
   AND  YEAR(BB.Date) = 2012 
)
SELECT SUM(Jan12) AS [Internet Jan 12], SUM(Feb12) AS [Internet Feb 12] -- ... and so on

也就是说,您的案例可能更适合于
PIVOT
——如果没有您的数据库进行查询,我无法制作合理的示例;但假设MSSQL,应该很容易理解

——您应该去掉多个查询,使用PIVOT(),这非常有效。我对SQL并不陌生,但仍在慢慢学习TSQL和SQLServer。我感谢你的帮助!最后一个问题……是否可以将此问题与另一个类似的查询合并?在尝试使用UNION ALL时,我继续遇到错误