gpt4 book ai didi

sql - PLSQL 或 SSRS,如何选择将所有值都放在一个组中?

转载 作者:行者123 更新时间:2023-12-01 10:55:07 25 4
gpt4 key购买 nike

我有一张这样的 table 。

ID NAME VALUE
______________
1 A X
2 A Y
3 A Z
4 B X
5 B Y
6 C X
7 C Z
8 D Z
9 E X

和查询:

SELECT * FROM TABLE1 T WHERE T.VALUE IN (X,Z)

这个查询给了我

ID NAME VALUE
______________
1 A X
3 A Z
4 B X
6 C X
7 C Z
8 D Z
9 E X

但我想查看具有所有参数的名称的所有值。 所以,只有 A 和 C 同时具有 X 和 Z 值,我想要的结果是:

ID NAME VALUE
______________
1 A X
2 A Y
3 A Z
6 C X
7 C Z

我怎样才能得到想要的结果?无论是使用 sql 还是使用报告服务。也许“GROUP BY ..... HAVING”子句会有所帮助,但我不确定。

顺便说一句,我不知道列表中会有多少参数。

非常感谢任何帮助。

最佳答案

标准的方法是这样的

SELECT id, name, value
FROM table1 a
WHERE name IN (SELECT name
FROM table1 b
WHERE b.value in (x,y)
GROUP BY name
HAVING COUNT(distinct value) = 2)

这将需要您确定列表中有多少个值,以便您可以在 HAVING 子句中使用 2 如果有 2 个元素,如果有 5 个元素则使用 5,等等。您还可以使用分析函数

SELECT id, name, value
FROM (SELECT id,
name,
value,
count(distinct value) over (partition by name) cnt
FROM table1 t1
WHERE t1.value in (x,y))
WHERE cnt = 2

关于sql - PLSQL 或 SSRS,如何选择将所有值都放在一个组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15552361/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com