相关疑难解决方法(0)

将单个列连接到逗号分隔的列表中

我已经看到了人们将单个列卷入逗号分隔列表的多个示例,但我还需要更多.

以下是我需要的数据和结果的示例.

DECLARE @SalesPerson table (SalesPersonID int, SalesPersonName varchar(10))
DECLARE @Region table (RegionID int, RegionName varchar(15))
DECLARE @SalesPersonRegion table (SalesPersonID int, RegionID int)

INSERT INTO @SalesPerson (SalesPersonID, SalesPersonName) VALUES (1,'Jeff') 
INSERT INTO @SalesPerson (SalesPersonID, SalesPersonName) VALUES (2,'Pat') 
INSERT INTO @SalesPerson (SalesPersonID, SalesPersonName) VALUES (3,'Joe') 

INSERT INTO @Region (RegionID, RegionName) VALUES (1,'North') 
INSERT INTO @Region (RegionID, RegionName) VALUES (2,'South') 
INSERT INTO @Region (RegionID, RegionName) VALUES (3,'East') 
INSERT INTO @Region (RegionID, RegionName) VALUES (4,'West') 

INSERT INTO @SalesPersonRegion (SalesPersonID,RegionID) VALUES (1,1)
INSERT INTO …
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server

5
推荐指数
1
解决办法
1万
查看次数

SQL Server:将结果从一对多查询展平

好的,我有一个输入订单的系统,每个订单都可以附加任意数量的债券,工作和项目编号.该OrderDetails表包含一个orderID用于转到OrderNumbers表并获取所有附加"数字"到此订单,然后根据在numType那里找到的列,它进入三个表之一(bond,job,project)并检索实际数字为用户显示和打印.

这意味着,如果该订单附加了3个项目编号,则尝试查询订单以搜索某个项目编号可以为同一订单返回3行.

我希望能够返回我的查询结果,只有1行的订单,以及包含所有3个分隔形式的项目的列,这可能吗?

这是我当前的查询,当订单附加多个相同类型的数字时,每个订单返回多行...

SELECT 
    ISNULL(b.Descr,'') as Bond, ISNULL(PO.Description,'') as PO, 
    ISNULL(j.Descr,'') as Job, ISNULL(Proj.Descr,'') as Project, 
    d.OrdNbr, d.BillofLadingNbr, d.TripAndDeliveryTicketNbr
FROM 
    OrderDetail d 
LEFT JOIN 
    OrderItemNumbers n ON d.OWID = n.LoadOWID 
LEFT JOIN 
    Bond b ON n.NumberOWID = b.OWID AND n.NumType = 0
LEFT JOIN 
    PONumbers PO ON n.NumberOWID = PO.OWID AND n.NumType = 1 
LEFT JOIN 
    Job j ON n.NumberOWID = j.OWID AND n.NumType = 2 
LEFT JOIN 
    Project Proj ON …
Run Code Online (Sandbox Code Playgroud)

sql sql-server one-to-many flatten sql-server-2008

5
推荐指数
1
解决办法
5986
查看次数

如何将一行中的所有值连接成一个字符串?

假设我有一行数据,存储如下:

    ------------------------
   | Col 1 | Col 2 | Col 3  |
   |------------------------|
   |  Foo  |  Bar  | Foobar |
Run Code Online (Sandbox Code Playgroud)

我如何将其连接成一个字符串,如下所示?

Foo-Bar-Foobar
Run Code Online (Sandbox Code Playgroud)

该表中的列标题(以及列标题的数量)是未知的,因此按列名称选择不是一个选项(?)。

请注意,我并不是试图将值列表连接到列中,而是尝试将值存储连接到一行中。我还希望避免使用数据透视表,因为我将处理大量数据并且不希望性能受到影响。

sql t-sql sql-server

5
推荐指数
1
解决办法
402
查看次数

如何动态计算GROUP中许多列的总和?

在下表中,我有一个可变数量的列,并且该数字在1000s内.我需要将按人名分组的1000列中的每一列的所有值相加.所以,smith's总数test_score_1,总数test_score_2,......总数test_score_1000.然后是Jackson's总数test_score_1,总数test_score_2,......总数test_score_1000.

test_score_n事先并不知道' '列的数量,而且它们总是在变化.

所以给这个表:

name      test_score_1 test_score_2 ...  test_score_1000
  smith        2              1                 0
  jackson      0              3                 1
  jackson      1              1                 2
  jackson      3              0                 3
  smith        4              5                 1
Run Code Online (Sandbox Code Playgroud)

我如何制作下表?

name      test_score_1 test_score_2 ...  test_score_1000
  smith        6              6                1
  jackson      4              4                6
Run Code Online (Sandbox Code Playgroud)

sql sql-server group-by aggregate-functions sql-server-2008

4
推荐指数
1
解决办法
317
查看次数

pandas 在组内排序然后聚合

我正在做搜索引擎的查询分析。用户可以在一个会话的不同时间在谷歌搜索引擎上一一搜索不同的查询。

我有多个字段的数据:session_idlog_timequeryfeature_i等。我想分组session_id,然后按 的concat顺序将几行合并为一行。这样输出数据将以时间序列的方式表示用户的行为。log_time

数据集

代码:

toy_data = pd.DataFrame({'session_id':[1,2,1,2,3,3,],
             'log_time':[4,5,6,1,2,3],
             'query':['hi','dude','pandas','groupby','sort','agg'],
             'cate_feat_0':['apple','banana']*3,
             'num_feat_0':[1,2,3,4,5,6]})
print(toy_data)
Run Code Online (Sandbox Code Playgroud)

输出:

       session_id  log_time query cate_feat_0  num_feat_0
0           1         4       hi       apple           1
1           2         5     dude      banana           2
2           1         6   pandas       apple           3
3           2         1  groupby      banana           4
4           3         2     sort       apple           5
5           3         3      agg      banana           6
Run Code Online (Sandbox Code Playgroud)

我想要的是:

## note that all list are sorted by log time …
Run Code Online (Sandbox Code Playgroud)

python sorting group-by dataframe pandas

4
推荐指数
1
解决办法
795
查看次数

Sql Server 2008粉碎XML

嗨我有这样的XML ...

<Questions>
  <Question1>A</Question1>
  <Question2>B</Question2>
  <Question3>C</Question3>
</Questions>
Run Code Online (Sandbox Code Playgroud)

我想回A,B,C.我见过一些类似的问题,但那些具有相同的重复节点名称.不幸的是,在这个阶段我无法改变它.我玩过AGES的SQL Xpath语法,没有运气.我可以获得整个问题节点,但理想情况下我想要实际数据.多个返回的行也可以.

任何帮助将不胜感激.

更新 - 基里尔的答案非常接近,除了我在表中有超过1条记录并且它返回1行内的所有记录数据.如果我能实现一个完美的row/xml文件!通过从该记录输出另一个字段,例如rownum或从文件输出另一个数据,例如ProfileName ..

谢谢,

阿德里安!

xml sql t-sql xpath xquery

3
推荐指数
1
解决办法
1037
查看次数

以逗号分隔格式对数据进行分组

我有一个名为SampleData的表,如下所示:

 col1    col2     
    1       a       
    1       b       
    1       c      
    2       d       
    2       e
    3       f
Run Code Online (Sandbox Code Playgroud)

我需要以下格式的数据:

col1    col2     
1       a,b,c           
2       d,e       
3       f
Run Code Online (Sandbox Code Playgroud)

有没有办法使用CTE这样做?

sql-server

3
推荐指数
1
解决办法
88
查看次数

mysql选择不同的逗号分隔值

我有一个 mysql 表

id      cid    c_name       keywords
 1       28    Stutgart    BW,Mercedes,Porsche,Auto,Germany
 2       34    Roma        Sezar,A.S. Roma
 3       28    München     BMW,Oktober Fest,Auto,Germany
Run Code Online (Sandbox Code Playgroud)

我需要一个查询来显示来自 cid=28 的关键字,但我只想看到 1 次一个关键字,例如(BW、Mercedes、Porsche、Auto、Bmw、Oktober Fest、Germany)我不想列出 2 次一个关键字,如何能解决这个问题吗?

我尝试了不同但无法得到我想要的

mysql group-by row distinct

3
推荐指数
1
解决办法
4371
查看次数

T-SQL 连接并将多行分组为一行

我正在寻找一种分组方式,同时还将行连接成逗号分隔的字符串。例子:

Name            Place
Steve Jones     New York
Steve Jones     Washington
Albert Smith    Miami
Albert Smith    Denver
Run Code Online (Sandbox Code Playgroud)

到 ...

Steve Jones    New York, Washington
Albert Smith   Miami, Denver
Run Code Online (Sandbox Code Playgroud)

不胜感激

t-sql sql-server

3
推荐指数
1
解决办法
2万
查看次数

从单列中选择多行到单行

我想编写一个SQL Server查询,它将从以下示例表中检索数据:

Table: Person
ID      Name
--      ----
1       Bill
2       Bob
3       Jim

Table: Skill
ID      SkillName
--      -----
1       Carpentry
2       Telepathy
3       Navigation
4       Opera
5       Karate

Table: SkillLink
ID      PersonID        SkillID
--      --------        -------
1       1               2
2       3               1
3       1               5
Run Code Online (Sandbox Code Playgroud)

如您所见,SkillLink表的目的是将各种(可能是多个或没有)技能与个人匹配.我想用我的查询实现的结果是:

Name    Skills
----    ------
Bill    Telepathy,Karate
Bob     
Jim     Carpentry
Run Code Online (Sandbox Code Playgroud)

因此,对于每个人,我想要一个逗号加入的列表,其中包含指向他的所有SkillNames.这可能是多项技能或根本没有技能.

这显然不是我工作的实际数据,但结构是一样的.

也请随意为这个问题建议一个更好的标题作为评论,因为简洁地说它是我的问题的一部分.

sql sql-server

2
推荐指数
2
解决办法
4万
查看次数