Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 单选择查询,根据3种不同的条件选择3种不同的变量_Sql_Sql Server - Fatal编程技术网

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

Sql 单选择查询,根据3种不同的条件选择3种不同的变量,sql,sql-server,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 尝试: MS S

有没有办法在单选查询中写入下面的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
尝试:

MS SQL Server 2008架构设置

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
| Col1 | Col2 | Col3 |
|------|------|------|
|    5 |    2 |    1 |
查询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
| Col1 | Col2 | Col3 |
|------|------|------|
|    5 |    2 |    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
| Col1 | Col2 | Col3 |
|------|------|------|
|    5 |    2 |    1 |

我会这样做:

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

感谢您通过小提琴演示链接给出答案。你能告诉我哪一个性能最好吗。在这种情况下,我应该使用
SUM()
还是
COUNT()
呢?你能告诉我哪一个性能最好吗。在这种情况下,我应该使用
SUM()
还是
COUNT()
?因为我在这个
@TableVar
中有大量数据,所以在您的情况下,
COUNT
更可取。。。。检查这篇文章-请在你的表格中提供数据类型的列谢谢你的链接,我将使用
COUNT()
-我的表格结构有点复杂,但你的回答对我帮助很大。谢谢。谢谢,你能告诉我哪一个性能最好吗。在这种情况下,我应该使用
SUM()
还是
COUNT()
?由于我在这个
@TableVar
中有大量的数据,我不知道哪个需要更多的时间,你可以用定时器测试它们,然后自己看看,如果你测试的话,你能告诉我哪个更好吗?目前正在本地工作,所以它会工作得很快。但我想问的是,在直播中,这肯定会花费更多的时间,所以……你需要计算行数还是需要每行内容的摘要?