考虑一个包含三个行的名称的数据库表:
Peter
Paul
Mary
Run Code Online (Sandbox Code Playgroud)
有没有一种简单的方法可以将其转换为单个字符串Peter, Paul, Mary
?
我知道在sql server中我们不能使用Group_concat
函数但是这里有一个问题,我需要Group_Concat
我的查询.我谷歌它发现了一些逻辑,但无法纠正它.我的SQL查询是
select m.maskid,m.maskname,m.schoolid,s.schoolname,
md.maskdetail
from tblmask m join school s on s.id = m.schoolid
join maskdetails md on m.maskid = md.maskid
order by m.maskname ;
Run Code Online (Sandbox Code Playgroud)
它给我的结果如
只看前三行在那个maskid,maskname,schoolid,schoolname是相同的但是maskdetail是不同的,所以想要一行,其中最后一列可以包含所有maskdetails,如maskid等等.
我希望我的输出像
等等.请在查询时帮助我.
提前致谢.
我想在SQL Server中创建一个表值函数,我想以逗号分隔值返回数据.
例如表格: tbl
ID | Value
---+-------
1 | 100
1 | 200
1 | 300
1 | 400
Run Code Online (Sandbox Code Playgroud)
现在,当我使用该函数执行查询时 Func1(value)
SELECT Func1(Value)
FROM tbl
WHERE ID = 1
Run Code Online (Sandbox Code Playgroud)
我想要的输出是: 100,200,300,400
什么是格式化输出的TSQL语法,以便列值显示为字符串,用逗号分隔.
例如,我的表CARS具有以下内容:
CarID CarName
----------------
1 Porsche
2 Mercedes
3 Ferrari
Run Code Online (Sandbox Code Playgroud)
我如何获得汽车名称: Porsche, Mercedes, Ferrari
大家好!
我正在寻找一种简单的方法来连接'n'值.就像是:
SELECT MyConcat(',', T.TextColumn)
FROM SomeTable AS T
WHERE T.SomeOtherColumn = SomeCondition
Run Code Online (Sandbox Code Playgroud)
所以,如果我有一个像这样的表:
SomeTable:
Id | TextColumn | SomeOtherColumn
----+------------+----------------
1 | Qwerty | Y
2 | qwerty | N
3 | azerty | N
4 | Azerty | Y
Run Code Online (Sandbox Code Playgroud)
它会导致类似于:
SQL:
SELECT MyConcat(';', T.TextColumn)
FROM SomeTable AS T
WHERE T.SomeOtherColumn = 'Y'
RESULT:
'Qwerty;Azerty'
Run Code Online (Sandbox Code Playgroud) 我有三张桌子:
table "package"
-----------------------------------------------------
package_id int(10) primary key, auto-increment
package_name varchar(255)
price decimal(10,2)
table "zones"
------------------------------------------------------
zone_id varchar(32) primary key (ex of data: A1, Z2, E3, etc)
table "package_zones"
------------------------------------------------------
package_id int(10)
zone_id varchar(32)
Run Code Online (Sandbox Code Playgroud)
我要做的是返回包表中的所有信息PLUS该包的区域列表.我希望区域列表按字母顺序排序并以逗号分隔.
所以我正在寻找的输出是这样的......
+------------+---------------+--------+----------------+
| package_id | package_name | price | zone_list |
+------------+---------------+--------+----------------+
| 1 | Red Package | 50.00 | Z1,Z2,Z3 |
| 2 | Blue Package | 75.00 | A2,D4,Z1,Z2 |
| 3 | Green Package | 100.00 | B4,D1,D2,X1,Z1 |
+------------+---------------+--------+----------------+
Run Code Online (Sandbox Code Playgroud)
我知道我可以在PHP中使用表示层来完成所需的结果.问题是,我希望能够对zone_list ASC或DESC进行排序,甚至使用"WHERE …
我想要清理一些数据,我需要在SQL Server°中找到一些特定的guids(即uniqueidentifiers).
我想出了一个存储过程,它从当前数据库中每个表的每个uniqueidentifier列执行SELECT,并在找到guid时返回结果集.
它使用INFORMATION_SCHEMA视图查找所有基表中的所有uniqueidentifier列(与视图相对).对于每个列,它会发出一个select,返回表的名称和找到它的列.
CREATE PROCEDURE dbo.FindGUID @searchValue uniqueidentifier AS
/*
Search all tables in the database for a guid
6/9/2009: Removed the IF EXISTS to double hit the database
*/
--DECLARE @searchValue uniqueidentifier
--SET @searchValue = '{2A6814B9-8261-452D-A144-13264433864E}'
DECLARE abc CURSOR FOR
SELECT
c.TABLE_NAME, c.COLUMN_NAME
FROM INFORMATION_SCHEMA.Columns c
INNER JOIN INFORMATION_SCHEMA.Tables t
ON c.TABLE_NAME = t.TABLE_NAME
AND t.TABLE_TYPE = 'BASE TABLE'
WHERE DATA_TYPE = 'uniqueidentifier'
DECLARE @tableName varchar(200)
DECLARE @columnName varchar(200)
DECLARE …
Run Code Online (Sandbox Code Playgroud) 如果我有这样的表格:
+------------+
| Id | Value |
+------------+
| 1 | 'A' |
|------------|
| 1 | 'B' |
|------------|
| 2 | 'C' |
+------------+
Run Code Online (Sandbox Code Playgroud)
我怎样才能获得这样的结果集:
+------------+
| Id | Value |
+------------+
| 1 | 'AB' |
|------------|
| 2 | 'C' |
+------------+
Run Code Online (Sandbox Code Playgroud)
我知道使用GROUP_CONCAT在MySQL中很容易做到,但我需要能够在MSSQL 2005中做到这一点
谢谢
我有一个关于在Update语句中使用子查询的问题.我的例子:
UPDATE TRIPS
SET locations = city + ', ' FROM (select Distinct city
from poi
where poi.trip_guid = trips.guid)
Run Code Online (Sandbox Code Playgroud)
是否可以在子查询中引用主表值(trips.guid)?
当我尝试使用时,trips.guid
我收到错误:
"多部分标识符"trips.guid"无法绑定."
"从poi中选择独特的城市"这一条款更多地归功于一个城市.
我需要转动一列(Numbers列).示例需要此数据:
a 1
a 2
b 3
b 4
c 5
d 6
d 7
d 8
d 9
e 10
e 11
e 12
e 13
e 14
Run Code Online (Sandbox Code Playgroud)
看起来像这样
a 1 2
b 3 4
c 5
d 6 7 8 9
e 10 11 12 13 14
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激...