Sql server 从表生成报告
我有一张像这样的桌子:Sql server 从表生成报告,sql-server,tsql,Sql Server,Tsql,我有一张像这样的桌子: +====+========+========+ | Id | name | value | +====+========+========+ | 1 | a | 7 | +----+--------+--------+ | 2 | c | 7 | +----+--------+--------+ | 1 | g | 1 | +----+--------+--------+ | 2 | c
+====+========+========+
| Id | name | value |
+====+========+========+
| 1 | a | 7 |
+----+--------+--------+
| 2 | c | 7 |
+----+--------+--------+
| 1 | g | 1 |
+----+--------+--------+
| 2 | c | 2 |
+----+--------+--------+
| 4 | g | 5 |
+----+--------+--------+
| 6 | t | 4 |
+----+--------+--------+
根据以下两个条件,我需要编写两(2)个查询以生成两个报告:
报告输出1=如果id和名称相同(id、名称、val)
报告输出2=如果id相同但名称不同(id、名称、val)
如何编写这两个查询?您的条件不清楚,但这可能是您想要的:
DECLARE @T TABLE (Id INT, Name VARCHAR(25), Value INT);
DECLARE @YourId INT = 1;
DECLARE @YourName VARCHAR(25) ='a';
/**/
INSERT INTO @T VALUES
(1, 'a', 7),
(2, 'c', 7),
(1, 'g', 1),
(2, 'c', 2),
(4, 'g', 5),
(6, 't', 4);
/*First query*/
SELECT *
FROM @T
WHERE ID = @YourID AND Name = @YourName;
/*Second query*/
SELECT *
FROM @T
WHERE ID = @YourID;
如果希望两个查询的结果都包含在一个结果中,则可以使用UNION ALL
作为:
SELECT *
FROM @T
WHERE ID = @YourID AND Name = @YourName
UNION ALL
SELECT *
FROM @T
WHERE ID = @YourID;
嗯,我不确定OP想要什么,但也许是这样的
// records where id and value are the same
SELECT * FROM @T WHERE ID=Value;
// other records having the same ids as abobe, but DIFFERENT values
SELECT * FROM @T WHERE ID IN
(SELECT ID FROM @T WHERE ID=Value)
AND Id!=Value;
结果:
Id Name Value
1 g 1
2 c 2
Id Name Value
1 a 7
2 c 7
感谢@Sami提供了我修改成这个的小提琴。好吧,你的情况不清楚,请你解释更多。请阅读一些关于改进你的问题的提示。没问题:)顺便说一句,OP甚至没有回复我们的评论。