TSQL-是否有单独的查询并排显示数据?
这是一种奇怪的请求,但有可能让单独的TSQL查询在不使用外部联接的情况下并排显示数据吗?我想知道我是否把这件事搞得很复杂 以下是我想要做的: 我有12个查询,它们会给我一个记录计数,我希望它们,而不是堆叠在一起,从右到左显示记录,就像它们在一个表中一样 因此,从这些查询中: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
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时,我继续遇到错误