让我们说:
我想查询表格中的colA,colB和colC。
我想看DISTINCT值,但我不希望colA成为区分标准。
省略colA不是一种选择。
构建该查询的最佳方法是什么?
答案 0 :(得分:7)
这里有两种情况。假设你有数据
A B C (columns)
a b c1
a b c2
取A的不同值,B只给出一个结果(a,b),列C有两个值。 所以问题是你想看到C的所有值还是A列和B列的每个不同值只有一个值?
如果您只想看到一个C值,那么您可以写
SELECT A, B, MAX(C) FROM YourTable
GROUP BY A, B
另一方面,如果你想查看C的所有值,那么
SELECT DISTINCT A, B, C FROM YourTable WHERE ROW(A,B) IN
(SELECT A, B FROM YourTable
GROUP BY A, B)
给你这个。如果表中还有其他列,则需要最后一种替代方法。
答案 1 :(得分:0)
我不知道临时表的语法,如果你愿意,可以使用伪代码=)
Select Distinct ColB, ColC into @Temp
From SomeTable
Where (predicates)
Select ColA, ColB, ColC
From SomeTable
Inner Join @Temp on (SomeTable.ColB = @Temp.ColB and SomeTable.ColC = @Temp.ColC)
Where (predicates) /* Added for comments */
希望这有帮助。
答案 2 :(得分:0)
尝试以下结构
Select cola, colb, colc, CONCAT(convert(cola,char),convert(row_number(), char)
希望这有帮助