相关疑难解决方法(0)

在T-SQL中输出逗号分隔列表

我有一张带有电话号码的桌子.我没有为每个号码吐出一行,而是返回逗号分隔的电话号码列表.在sql中最简单的方法是什么?一会儿循环?

sql t-sql sql-server-2008

6
推荐指数
2
解决办法
7096
查看次数

循环遍历列SQL

我正在寻找一种循环表的列来生成输出的方法,如下所述.

该表看起来像这样:

ID  Name     OPTION1 OPTION2 OPTION3 OPTION4 OPTION5
1   MyName1  1       0       1       1       0
2   MyName2  0       0       1       0       0

输出看起来像这样:

MyName1 -> OPTION1, OPTION3, OPTION4
MyName2 -> OPTION3

这样做的任何方向都将非常感激.否则,我想我将不得不使用游标或临时表...数据库引擎是MSSQL.我在数据库级别进行格式化的原因是将其输出提供给有限的可编程环境.

更新:输出可以以任何形式,一串或多行字符串.

更新:通过使用@str = @str + ...构建字符串是否可以实现这一目标?

更新:我更改了输出...这应该更容易.

谢谢!

sql sql-server csv loops

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

SQL中的String.Join

我想从一个叫做RMA(简化)的表中选择:

 idRMA| RMA_Number
 -----------------------
 1      RMA0006701
 2      RMA0006730
 3      RMA0006736
 4      RMA0006739
 5      RMA0006742
Run Code Online (Sandbox Code Playgroud)

之间有一个结表RMAtdefSymptomCode称为trelRMA_SymptomCode:

 fiSymptomCode| fiRMA
 -----------------------
 1              1
 1              2
 2              2
 5              3
 7              3
 8              3
 2              5
 3              5
 4              5
 5              5
Run Code Online (Sandbox Code Playgroud)

为了完整起见,这是tdefSymptomCode:

idSymptomCode    SymptomCodeNumber      SymptomCodeName
1                0000                   Audio problem
2                0100                   SIM problem
3                0200                   Appearance problem
4                0300                   Network problem
5                0500                   On/Off problem
Run Code Online (Sandbox Code Playgroud)

问:

每个RMA都可以有0-5个SymptomCodes.如何在标量值函数中将SymptomCodeNumber与':'等分隔符一起加入SymptomCodeNumber,这样我只得到一个varchar值作为结果.

像这样的东西(getRmaSymptomCodesSVF 在哪里):

SELECT idRMA, …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server sql-server-2005 user-defined-functions

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

如何使用sql for xml path('')但保留回车符

我有以下代码

select
    (
    select cast(Narrative as Varchar(max)) + char(13) 
    from officeclientledger 
    where ptmatter=$matter$ and ptTrans=4 
    for xml path (''), type
    )
Run Code Online (Sandbox Code Playgroud)

它提供的结果如下:

Cwm Taff NHS Trust医疗记录 ; Purby医学博士 ; (不包括空格,需要插入以便提出问题)

但是,有没有办法提供诸如此类的结果

Cwm Taff NHS Trust医疗记录

Purby医学博士

xml sql

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

创建sql,它会给我用分号分隔的产品名称?

我有一个如下的产品表.我想创建一个sql,它将为我提供以分号分隔的产品名称.

ProductName  AccountExpert
--------------------------
Tea          JohnSmith
Banana       GarySulvan
Water        JohnSmith
Candy        BobbySimmons
ConfecItem   BobbySimmons
Bread        JohnSmith
Soda         JohnSmith
Run Code Online (Sandbox Code Playgroud)

Sql输出应该是这样的

AccountExpert  Products
-----------------------
JohnSmith      Tea; Water; Bread; Soda
GarySulvan     Banana
BobbySimmons   Candy; ConfecItem
Run Code Online (Sandbox Code Playgroud)

sql sql-server-2008

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

如何将子查询结果字段连接到父查询中?

数据库:SQL Server 2008。

我有一个像这样的真正(假)常规查询:-

SELECT CarId, NumberPlate
    (SELECT Owner
     FROM Owners b
     WHERE b.CarId = a.CarId) AS Owners
FROM Cars a
ORDER BY NumberPlate
Run Code Online (Sandbox Code Playgroud)

这就是我想要得到的......

=> 1    ABC123     John, Jill, Jane
=> 2    XYZ123     Fred
=> 3    SOHOT      Jon Skeet, ScottGu
Run Code Online (Sandbox Code Playgroud)

所以,我尝试使用

AS[Text()] ... FOR XML PATH('')但那是包括奇怪的编码字符(例如回车)。......所以我对此并不100%满意。

我还尝试查看是否有 COALESCE 解决方案,但我所有的尝试都失败了。

所以 - 有什么建议吗?

sql-server concatenation subquery sql-server-2008

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

为什么SQL Server在指定ORDER BY子句时忽略字符串连接中的vaules

我有下表

Created    Comment
2010/10/10 Text1 
2010/11/11 Text2
2010/12/12 Text3
Run Code Online (Sandbox Code Playgroud)

我需要将所有注释收集到单个字符串中

SELECT  @Comment = COALESCE(@Comment, '')
   + CHAR(13) + CHAR(10) + CONVERT(NVARCHAR(30), [dbo].[Comment].[Created], 101) + ': ' + ISNULL([Comment].[Text], '')
    FROM Comment
Run Code Online (Sandbox Code Playgroud)

没有订购它按预期结束工作返回所有评论.但在运行以下代码后,添加了ORDER BY子句:

SELECT  @Comment = COALESCE(@Comment, '')
   + CHAR(13) + CHAR(10) + CONVERT(NVARCHAR(30), [Created], 101) + ': ' + ISNULL([Text], '')
    FROM Comment
  ORDER BY Created
Run Code Online (Sandbox Code Playgroud)

只返回最后一条评论.有没有人知道为什么ORDER BY导致串联中的奇怪结果?

PS:如果使用FOR XML子句而不是连接,它可以正常工作是否有办法创建SQL Server函数以将子查询中的多行"连接"到单个分隔字段?.

sql sql-server concatenation sql-order-by

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

SQL Server以逗号分隔列表的形式连接结果

我有一个公司,行业和company_industry_map多对多表.

company_id | company_name
1            Goldman Sachs
2            Microsoft

industry_id | industry
4             Technology
5             Finance
6             Banking

company_id | industry_id
1            5
1            6
2            4
Run Code Online (Sandbox Code Playgroud)

我想编写一个将所有行业加入逗号分隔列表的查询,如下所示:

company_id | industries
1            Finance, Banking
2            Technology
Run Code Online (Sandbox Code Playgroud)

这是我正在尝试编写的一般查询:

SELECT company_id, 
       xxx AS industries 
  FROM company c, 
       company_industry_map m 
 WHERE c.company_id = m.company_id
Run Code Online (Sandbox Code Playgroud)

sql sql-server join

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

在单个查询中连接选定的列?

我知道你可以做到这一点,因为我之前已经看过它,但我忘记了到现在为止我不需要这样做.

我有一个名为Employees的表,它有各种员工数据(duh).我需要一个查询,它将对表中所有行的名字和姓氏进行选择,然后将它们全部置于逗号分隔的字符串中.

例如,我有几行(比实际上要多得多,但为了这个问题,假设有两个)数据看起来像:

FName    LName
-------  -----
Richard  Prescott
Jill     Sentieri
Carol    Winger

我需要一个能够以这种形式返回上述数据的选择:

Richard Prescott, Jill Sentieri, Carol Winger

预先感谢您的帮助!

sql sql-server select concatenation

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