Sql 单选择查询,根据3种不同的条件选择3种不同的变量
有没有办法在单选查询中写入下面的SQL查询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
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
中有大量的数据,我不知道哪个需要更多的时间,你可以用定时器测试它们,然后自己看看,如果你测试的话,你能告诉我哪个更好吗?目前正在本地工作,所以它会工作得很快。但我想问的是,在直播中,这肯定会花费更多的时间,所以……你需要计算行数还是需要每行内容的摘要?