单选查询根据3种不同的条件选择3个不同的变量

时间:2016-01-06 09:07:58

标签: sql sql-server

有没有办法在单选查询

中编写下面的SQL查询
SET @T1 = COUNT(1) FROM @TableVar
SET @T2 = COUNT(1) FROM @TableVar WHERE bit1 = 1 AND bit2 = 0
SET @T3 = COUNT(1) FROM @TableVar WHERE bit1 = 0 AND bit2 = 1

SELECT @T1 AS Col1,
       @T2 AS Col2,
       @T3 AS Col3

3 个答案:

答案 0 :(得分:4)

SELECT T1 = COUNT(1),
       T2 = COUNT(CASE WHEN bit1 = 1 AND bit2 = 0 THEN 1 END),
       T3 = COUNT(CASE WHEN bit1 = 0 AND bit2 = 1 THEN 1 END)
FROM @TableVar

答案 1 :(得分:1)

尝试:

SQL Fiddle

MS SQL Server 2008架构设置

查询1

DECLARE  @TableVar TABLE
(bit1 bit, bit2 bit)

INSERT INTO @TableVar Values(0,0)
INSERT INTO @TableVar Values(1,1)
INSERT INTO @TableVar Values(1,0)
INSERT INTO @TableVar Values(1,0)
INSERT INTO @TableVar Values(0,1)


SELECT COUNT(1) AS Col1,
       SUM(CASE WHEN bit1=1 and bit2=0 THEN 1 ELSE 0 END) AS Col2,
       SUM(CASE WHEN bit1=0 AND bit2=1 THEN 1 ELSE 0 END) AS Col3
FROM @TableVar

<强> Results

| Col1 | Col2 | Col3 |
|------|------|------|
|    5 |    2 |    1 |

答案 2 :(得分:0)

这就是我要做的:

select count(*),
(select count(*) from @TableVar WHERE bit1 = 1 AND bit2 = 0) as col2,
(select count(*) from @TableVar WHERE bit1 = 0 AND bit2 = 1) as col3  from @TableVar