相关疑难解决方法(0)

如何在不创建存储过程的情况下将多行连接成Oracle中的一行?

如何在不创建存储过程的情况下在oracle中实现以下功能?

数据集:

question_id    element_id
1              7
1              8
2              9
3              10
3              11
3              12
Run Code Online (Sandbox Code Playgroud)

期望的结果:

question_id    element_id
1              7,8
2              9
3              10,11,12
Run Code Online (Sandbox Code Playgroud)

sql oracle concatenation string-aggregation

55
推荐指数
3
解决办法
23万
查看次数

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

使用"FOR XML PATH"时如何避免字符编码?

我正在寻找从SQL Server 2005表创建一个以逗号分隔的值列表,就像在JanetOhara的问题中一样.我正在使用类似于techdo对问题的回答中提出的查询.

一切正常,除了值列表正在进行XML编码.应该是什么:

Sports & Recreation,x >= y
Run Code Online (Sandbox Code Playgroud)

而是返回为:

Sports & Recreation,x <= y
Run Code Online (Sandbox Code Playgroud)

有没有办法在SQL Server中使用"FOR XML"时禁用XML字符编码?

xml encoding sql-server-2005 for-xml-path

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

SQL查询 - 将结果连接成一个字符串

我有一个包含以下代码的sql函数:

DECLARE @CodeNameString varchar(100)

SELECT CodeName FROM AccountCodes ORDER BY Sort
Run Code Online (Sandbox Code Playgroud)

我需要将select查询中的所有结果连接到CodeNameString中.

显然,C#代码中的FOREACH循环会这样做,但我如何在SQL中执行此操作?

sql t-sql sql-server sql-function

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

逗号分隔结果在SQL中

我有以下代码,它将为我的结果创建一个逗号分隔列表:

DECLARE @listStr VARCHAR(MAX)
SELECT @listStr = COALESCE(@listStr+', ' ,'') + INSTITUTIONNAME
FROM EDUCATION
WHERE STUDENTNUMBER= '111'
SELECT @listStr
Run Code Online (Sandbox Code Playgroud)

问题在于它创建了一个大量逗号分隔的行.我需要它每行返回一个逗号分隔的列表.

所以,如果Simon已经成为2个机构的一部分,那么我希望:

"INSTITUTION1, INSTITUTION2"
Run Code Online (Sandbox Code Playgroud)

由于我没有提供where子句,我希望我的结果对于数据库中的每一行都显示如下.

t-sql sql-server sql-server-2008

36
推荐指数
3
解决办法
11万
查看次数

使用bcp实用程序和SQL Server 2008将表导出到具有列标题(列名称)的文件

我已经看到一些hacks试图让bcp实用程序导出列名和数据.如果我所做的只是将表转储到文本文件中,那么使用bcp添加列标题的最简单的方法是什么?

这是我目前使用的bcp命令:

bcp myschema.dbo.myTableout myTable.csv /SmyServer01 /c /t, -T
Run Code Online (Sandbox Code Playgroud)

sql-server csv bcp header

35
推荐指数
6
解决办法
18万
查看次数

SQL,如何连接结果?

我目前有一个返回许多字段的SQL查询.我需要一个字段实际上是一个子查询子.

问题详细:

如果我有一个包含两列的表X,ModuleID并说ModuleValue,我如何编写SQL查询来获取结果并将其连接到一个字段:

EG结果返回

 (SELECT ModuleValue FROM Table_X WHERE ModuleID=@ModuleID)
Run Code Online (Sandbox Code Playgroud)

价值1

价值2

价值3

...

我需要返回结果(作为单行,与上面不同):

值1,值2,值3

是否有一个简单的连接方法可以是用户?

编辑:

DB是MS TSQL(2005)

sql sql-server sql-server-2005 concatenation sql-server-group-concat

32
推荐指数
7
解决办法
9万
查看次数

在MySQL中,是否可以从GROUP_CONCAT返回超过1024个字符

我有一个查询,它返回一个状态的计数,需要一些非常复杂的工作来计算.用户想深入查看该列表,我认为最简单的方法是使用GROUP_CONCAT获取ID.

不幸的是,GROUP_CONCAT的结果被截断为1024(?!)个字符.

是否可以获得超过1024个字符,或者我是否以错误的方式进行此操作?

mysql

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

逗号分隔列表作为单个字符串,T-SQL

我的T-SQL查询生成以下结果集

ID        Date
756 2011-08-29
756 2011-08-31
756 2011-09-01
756 2011-09-02
Run Code Online (Sandbox Code Playgroud)

我怎么能像这样转换

ID                Date
756 2011-08-29, 2011-08-31, 2011-09-01, 2011-09-02
Run Code Online (Sandbox Code Playgroud)

任何建议将不胜感激.

t-sql sql-server

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

nvarchar concatenation/index/nvarchar(max)莫名其妙的行为

我今天在SQL Server(2008R2和2012)中遇到了一个非常奇怪的问题.我正在尝试使用串联和select语句来构建字符串.

我找到了解决方法,但我真的很想了解这里发生了什么以及为什么它没有给我预期的结果.有人可以向我解释一下吗?

http://sqlfiddle.com/#!6/7438a/1

根据要求,这里的代码也是:

-- base table
create table bla (
    [id] int identity(1,1) primary key,
    [priority] int,
    [msg] nvarchar(max),
    [autofix] bit
)

-- table without primary key on id column
create table bla2 (
    [id] int identity(1,1),
    [priority] int,
    [msg] nvarchar(max),
    [autofix] bit
)

-- table with nvarchar(1000) instead of max
create table bla3 (
    [id] int identity(1,1) primary key,
    [priority] int,
    [msg] nvarchar(1000),
    [autofix] bit
)

-- fill the three tables with the same values …
Run Code Online (Sandbox Code Playgroud)

sql-server nvarchar string-concatenation sql-server-2012

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