Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.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 server 从表生成报告_Sql Server_Tsql - Fatal编程技术网

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甚至没有回复我们的评论。