联合使用不同列和数据的不同表

时间:2014-07-07 20:16:04

标签: sql sql-server select

我的问题是我有4个不同的SELECT with

SELECT COUNT (*) AS regular
WHERE experience = 1 AND bl = 1

SELECT COUNT (*) AS rptmm
WHERE experience = 1 AND bl = 0

SELECT COUNT (*) AS new
WHERE experience = 0 AND bl = 0

SELECT COUNT (*) AS rptss
WHERE experience = 0 AND bl = 1

我希望结果与各自的名称一起显示,如:

regular rptmm  new  rptss
  10      5     2     6

3 个答案:

答案 0 :(得分:2)

首先,我建议不要使用Count()* 。这个网站上有很多答案解释了为什么我不打算重复它。

相反,我建议你使用这样的查询:

SELECT     (SELECT COUNT (tab.someColumnName)
           FROM TableName tab
           WHERE tab.experience = 1 AND tab.bl = 1) AS 'Regular',

           (SELECT COUNT (tab.someColumnName)
           FROM TableName tab               
           WHERE tab.experience = 1 AND tab.bl = 0) AS 'rptmm',

           (SELECT COUNT (tab.someColumnName)
           FROM TableName tab
           WHERE tab.experience = 0 AND tab.bl = 0) AS 'New',

           (SELECT COUNT (tab.someColumnName)
           FROM TableName tab
           WHERE tab.experience = 0 AND tab.bl = 1) AS 'rptss'

希望这有帮助!!!

答案 1 :(得分:0)

只需将UNION ALL放在四个语句之间,就会得到四行,每行都有一行。但是,您将丢失列名称。您还可以使用join来获得一行包含四个columnes。只需在每个sql语句之间放置关键字join。

SELECT COUNT (*) AS regular
WHERE experience = 1 AND bl = 1
JOIN
SELECT COUNT (*) AS rptmm
WHERE experience = 1 AND bl = 0
JOIN
SELECT COUNT (*) AS new
WHERE experience = 0 AND bl = 0
JOIN
SELECT COUNT (*) AS rptss
WHERE experience = 0 AND bl = 1

答案 2 :(得分:0)

您可以创建一个临时表来为您保存所有这些数据:将Name1,Name2,Name3,Name4替换为您想要调用它们的任何内容。这些将是列标题。

CREATE TABLE #Temp(
                        NAME1 INT
                       ,NAME2 INT
                       ,NAME3 INT
                       ,NAME4 INT
            )

INSERT INTO #Temp
(NAME1)
SELECT COUNT(*) AS regular
WHERE experience = 1 AND bl = 1

INSERT INTO #Temp
(NAME2)
SELECT COUNT(*) AS regular
WHERE experience = 1 AND bl = 0

INSERT INTO #Temp
(NAME3)
SELECT COUNT(*) AS regular
WHERE experience = 0 AND bl = 0

INSERT INTO #Temp
(NAME4)
SELECT COUNT(*) AS regular
WHERE experience = 0 AND bl = 1*

SELECT * FROM #Temp