总结一行或一列中多个tal的计数

时间:2015-07-02 15:03:10

标签: sql-server

我设计了一个迁移脚本,作为最后一个序列,我正在运行以下两行。

select count(*) from Origin
select count(*) from Destination

但是,我想将这些数字作为单元格呈现在同一个表格中。我还没有决定是否最适合将它们作为一行中的单独行或一行中的相邻列放置,但我确实希望它们在同一个表中。

如何从这些选择中选择垂直/水平对齐的东西?

我已经尝试选择,无论有没有括号,但是id没有用(可能是因为缺少来自)......

此问题与another one有关,但在两个方面有所不同。首先,它更直接,更清晰地说明问题。其次,它询问所选值的水平和垂直对齐,而链接的问题只考虑前者。

select 
  select count(*) from Origin,
  select count(*) from Destination

select(
  select count(*) from Origin,
  select count(*) from Destination)

2 个答案:

答案 0 :(得分:2)

你需要在main(top)SELECT下嵌套两个select语句,以便得到一行包含两个表的计数:

SELECT
    (select count(*) from Origin) AS OriginCount,
    (select count(*) from Destination) AS DestinationCount

SQLFiddle for the above query

我希望这是你正在寻找的东西,因为"同桌"你提到的有点令人困惑。 (我假设你是指结果集)

或者,您可以使用UNION ALL返回具有两个表计数的两个单元格。

SELECT COUNT(*), 'Origin' 'Table' FROM ORIGIN
UNION ALL
SELECT COUNT(*), 'Destination' 'Table' FROM Destination

SQLFiddle with UNION ALL

SQLFiddle with UNION

我建议添加第二个文本列,以便您知道每个数字的相应表格。

与简单UNION相反,UNION ALL命令每次都会返回两行。如果两个表中的行数相同(相同的数字),UNION命令将生成单个结果(单个单元格)。

答案 1 :(得分:1)

......或者如果你想要垂直......

select 'OriginalCount' as Type,  count(*)
  from origin
union
select 'DestinationCount' as Type,  count(*)
  from destination