Sql server 2008 a、B、C、D分组中的不同E、F?
我想确定A、B、C、D分组中E、F列组合的不同值超过1的情况 例如,给定以下数据:Sql server 2008 a、B、C、D分组中的不同E、F?,sql-server-2008,tsql,Sql Server 2008,Tsql,我想确定A、B、C、D分组中E、F列组合的不同值超过1的情况 例如,给定以下数据: SELECT * FROM MyTable A B C D E F ---------- ---------- ---------- ---------- ---------- ---------- 1 1 1 1 A B
SELECT * FROM MyTable
A B C D E F
---------- ---------- ---------- ---------- ---------- ----------
1 1 1 1 A B
1 1 1 1 A B
1 1 1 2 A C
1 1 1 2 A D
我想回去
A B C D
---------- ---------- ---------- ----------
1 1 1 2
…因为在A、B、C、D分组中有多个不同的E、F组合
下面是创建测试用例的SQL
CREATE TABLE [dbo].[MyTable](
[A] [nchar](10) NULL,
[B] [nchar](10) NULL,
[C] [nchar](10) NULL,
[D] [nchar](10) NULL,
[E] [nchar](10) NULL,
[F] [nchar](10) NULL
) ON [PRIMARY]
GO
INSERT INTO [dbo].[MyTable]([A], [B], [C], [D], [E], [F])
SELECT N'1 ', N'1 ', N'1 ', N'1 ', N'A ', N'B ' UNION ALL
SELECT N'1 ', N'1 ', N'1 ', N'1 ', N'A ', N'B ' UNION ALL
SELECT N'1 ', N'1 ', N'1 ', N'2 ', N'A ', N'C ' UNION ALL
SELECT N'1 ', N'1 ', N'1 ', N'2 ', N'A ', N'D '
编辑:使用了错误的窗口功能
编辑2:使用示例数据现在更清晰
SELECT A,B,C,D
FROM [dbo].[MyTable]
GROUP BY A,B,C,D
HAVING COUNT(DISTINCT E) > 1 OR COUNT(DISTINCT F) > 1
编辑:使用了错误的窗口功能
编辑2:使用示例数据现在更清晰
SELECT A,B,C,D
FROM [dbo].[MyTable]
GROUP BY A,B,C,D
HAVING COUNT(DISTINCT E) > 1 OR COUNT(DISTINCT F) > 1
或
或
@维利卡:我在你的样本数据前30分钟写的。我基本上猜到了。但我现在明白我的错误了,我认为我们的答案都是错的。它们都返回2行而不是1行。我添加了额外的信息来帮助人们帮助我:-@Velika:我在你的样本数据之前30分钟写了这篇文章。我基本上猜到了。但我现在明白我的错误了,我认为我们的答案都是错的。它们都返回2行而不是1行。我添加了其他信息以帮助人们帮助我:-
WITH T
AS (SELECT *,
DENSE_RANK() OVER (PARTITION BY A, B, C, D ORDER BY E, F) Rnk
FROM [dbo].[MyTable])
SELECT DISTINCT A,
B,
C,
D
FROM T
WHERE Rnk = 2