SQL Server在具有相等列的行中选择和组合值

时间:2015-10-14 20:53:08

标签: sql-server select distinct concat

我发现有几个问题可以触及一点,但在这种情况下,没有什么能满足我的所有需求。不幸的是,我还没有把SQL放在一起。

基本上我从表中选择了几行,我想只为一列选择具有不同值的行,但是要组合来自不同列的所有行的值,并在显示的行中显示该总和。

另外,我想从1列中选择不同的值。

以下是一个例子:

ID  #_of_Items  Place   Description
=======================
1        2       CA     towels
2        4       NY     shirts
3        1       MA     hats
4        3       CA     shorts
4        2       CA     pins
4        4       NY     socks

我想选择:

Place    #_of_Items
=======================
CA        7
NY        8
MA        1

只需要两列 - 基本上,这个地方是唯一的,但它需要隐藏行中所有#_of_items的总和,并将它们添加到它显示的每个状态的一行。

然后,如果可能的话,我还想在描述栏中选择所有不同条目的组合,所以:

"towels, shirts, hats, shorts, pins, socks"

我希望这是有道理的。

非常感谢大家!

2 个答案:

答案 0 :(得分:0)

如果您可以在数据库中创建用户定义的函数(替换为您的表名称):

CREATE FUNCTION dbo.JoinItems(@place nvarchar(10))
    RETURNS NVARCHAR(MAX)
AS
BEGIN
    DECLARE @list NVARCHAR(MAX)
    SELECT @list = CASE WHEN @list IS NULL THEN N'' ELSE @list + N', ' END + description
      FROM <table>
     WHERE place = @place
    RETURN @list
END
GO

然后您可以在查询中使用它来返回项目计数以及特定于该地点的项目列表(同样,替换为您的表名称):

SELECT place,
       [#_of_Items] = SUM([#_of_Items]),
       Items = dbo.JoinItems(place)
  FROM <table>
 GROUP BY place 

答案 1 :(得分:0)

SQL 2005 +:

Class Add:    
  def __init__(a,b):
    self.a = a
    self.b = b

  def addition (self):
    """
    Learning Python to make a better world
    This is my first program
    """
    c = self.a+slef.b
    print (c)

 if __name__ == '__main__':
   add1 = Add(sys.argv[1:])
   Add.addition()