Sql 获取每组中匹配的行
我正在尝试进行sql查询。我从下面的两个表中得到了一些结果。下面的结果对我很好。现在我想要每个组中存在的值。例如,A和B出现在每个组(每个ID中)。所以我只想要A和B的结果。而且我想让我的查询动态化。有人能帮忙吗Sql 获取每组中匹配的行,sql,sql-server,Sql,Sql Server,我正在尝试进行sql查询。我从下面的两个表中得到了一些结果。下面的结果对我很好。现在我想要每个组中存在的值。例如,A和B出现在每个组(每个ID中)。所以我只想要A和B的结果。而且我想让我的查询动态化。有人能帮忙吗 | ID | Value | |----|-------| | 1 | A | | 1 | B | | 1 | C | | 1 | D | | 2 | A | | 2 | B | | 2 | C | | 3 |
| ID | Value |
|----|-------|
| 1 | A |
| 1 | B |
| 1 | C |
| 1 | D |
| 2 | A |
| 2 | B |
| 2 | C |
| 3 | A |
| 3 | B |
在下面的查询中,我已将您当前的查询放入CTE以供进一步使用。我们可以尝试选择当前结果中显示每个
ID
的值。这意味着这些值与每个ID
相关联
WITH cte AS (
-- your current query
)
SELECT Value
FROM cte
GROUP BY Value
HAVING COUNT(DISTINCT ID) = (SELECT COUNT(DISTINCT ID) FROM cte);
select Value from MyTable group by Value
having SUM(ID) = (SELECT SUM(DISTINCT ID) from MyTable)
select Value from MyTable group by Value
having COUNT(ID) = (SELECT COUNT(DISTINCT ID) from MyTable)
使用这个
WITH CTE
AS
(
SELECT
Value,
Cnt = COUNT(DISTINCT ID)
FROM T1
GROUP BY Value
)
SELECT
Value
FROM CTE
WHERE Cnt = (SELECT COUNT(DISTINCT ID) FROM T1)
解决方案很简单——至少可以用两种方法来实现。按字母分组(
Value
),使用SUM
或COUNT
(ID中的不同值)聚合ID。这样,选择那些具有SUM(ID)
或COUNT(ID)
值的字母