如何在多列上应用distinct

时间:2014-12-16 02:21:25

标签: sql sql-server sql-server-2008 distinct

朋友们,我有来自客户的表,我想在其中获取其三个列CustomerType,CustomerReg,CustomerID的不同值。

而不是为不同的

做三个单独的查询

喜欢从Customer中选择不同的CustomerType ..然后为CustomerReg ..可以在一个查询中实现...

原因是我会将每列不同的值附加到特定的下拉列表框中。

3 个答案:

答案 0 :(得分:2)

您可以使用grouping sets执行此操作。如果您希望将值分为三个单独的列:

select CustomerType, CustomerReg, CustomerId
from Customer
group by grouping sets ((CustomerType), (CustomerReg), (CustomerId))

答案 1 :(得分:1)

如果我理解正确,您希望在列中的一列中显示所有客户类型,customerreg和customerIds的不同列表?

试试这个......

select distinct CustomerType + ' : ' + CustomerReg + ' (' + CustomerId + ')' as Name
from Customer

这将返回一个字符串,如'External:23423412(2344)' 您应该通过有意义的事情来订购它。 尝试添加

order by Name

尽管如果客户只能在客户表中出现一次,您就不需要DISTINCT。

再次阅读您的问题,看起来您想在一个查询中返回每列的不同列表,而不是一个独特的组合?然后上面提到的分组集可能会让你最接近,虽然根据你的数据结构,如果你有很多客户,性能可能会成为一个问题。

您在UI中使用的是哪种语言? 如果它是.Net,你可以使用3个单独的查询打开一个datareader,然后使用datareader.nextresult

这里有一个解释,

http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.data.framework.datareader.nextresult.aspx

这里有一个例子,

http://msdn.microsoft.com/en-us/library/haa3afyz(v=vs.110).aspx

希望有所帮助

答案 2 :(得分:0)

你甚至可以这样做:

select distinct CustomerType, CustomerReg, CustomerId
from Customer
相关问题