我的下表中有一些数据
table_1
column_1 column_2
1 10
1 20
1 30
1 40
1 50
2 -10
2 -20
2 -30
2 -40
2 -50
Run Code Online (Sandbox Code Playgroud)
我想将此结果更改为这样的结果
column_1 column_2
1 10
2 -10
1 20
2 -20
1 30
2 -30
1 40
2 -40
1 50
2 -50
Run Code Online (Sandbox Code Playgroud)
我不确定是否有办法使用order by来做到这一点?我想要展示的是我试图将(10,-10)显示为一组数据
我想知道这张表是否有可能
ID Price ServiceID
1 50 11
1 -10 12
2 100 11
2 20 11
Run Code Online (Sandbox Code Playgroud)
按ID分组,总结价格并连接serviceID,如下所示:
ID Price ServiceID
1 40 11,12
2 120 11
Run Code Online (Sandbox Code Playgroud)
按ID分组并对价格求和是相当简单的,但是连接服务ID会让我感到不安.
感谢您的参与.
我有两个表,Books和Authors,它们之间通过名为book_authors的第三个表具有多对多关系,我试图使用内部联接列出每本书的作者的所有书籍,以便将它们显示在DataList控件,但是join 导致了几个重复的行,因为每本书可能有很多作者,所以每个作者都会有一行。
例子:
book_title author
b1 a1
b1 a2
Run Code Online (Sandbox Code Playgroud)
解决此问题的最佳方法是什么,使其变为:
book_title author
b1 a1, a2
Run Code Online (Sandbox Code Playgroud) 我正在加入多个表,我希望根据以下内容将一个列值放入行中TechnicianName:
我有4个表easy_tbljobcard,easy_tbltechnician并easy_tblproblem和easy_tbltechnicianMaster
我得到TechnicianName第2列从easy_tbltechnicianMaster 哪里technicianId存在easy_tbltechnician
我想STUFF在我的查询中的第3列(p.ProblemReported)
当前的SQL语句:
SELECT j.CardID,
, (SELECT TechnicianName FROM easy_tbltechnicianMaster WHERE TechnicianID = t.technicianID) AS TechnicianName
, p.ProblemReported
FROM easy_tbljobcard AS j
JOIN easy_technician AS t ON t.CardID = j.CardID
LEFT JOIN easy_tblproblem AS p ON p.CardID = t.CardID
Run Code Online (Sandbox Code Playgroud)
查询结果:
???????????????????????????????????????????????????
? CardID ? TechnicianName ? ProblemReported ?
???????????????????????????????????????????????????
? 1 ? AKBAR ? PROBLEM A ?
? …Run Code Online (Sandbox Code Playgroud) sql t-sql sql-server sql-server-2008 sql-server-group-concat
我尝试创建一个通用函数,可以像在 SQL Server 2017 上使用新的 string_agg 内置函数的示例一样使用
内部实现可以类似于以下内容
with tbl as(
select a.Id, c.Desc
from TableA a
join TableB b on b.aId = a.Id
join TableC c on c.Code = b.bCode
)
select distinct ID
, STUFF(( select ', ' + Desc from tbl t where t.ID = tbl.ID
for xml path(''),TYPE).value('.','VARCHAR(MAX)'),1,2,'') Desc
from tbl
Run Code Online (Sandbox Code Playgroud)
但是如何接收字段键、要连接的字段、分隔符和范围选择上下文呢?Inline与或Multi-Statement Table-Valued Functions相关吗?
是否有SQL Server的Implode类型函数?
我所拥有的是一个列表(在SQL服务器表中):
Apple
Orange
Pear
Blueberry
Run Code Online (Sandbox Code Playgroud)
我想让他们出来
Apple, Orange, Pear, Blueberry
Run Code Online (Sandbox Code Playgroud)
我希望空格和逗号可配置,但如果不是,我总是可以替换它...
快速帮助将不胜感激!
我有一个看起来像这样的查询
SELECT J.JobID,T.Title FROM JobsTagMap J
Left Join Tags T
ON J.TagID=T.TagID
Run Code Online (Sandbox Code Playgroud)
返回以下数据集(简化,JobID实际上是UniqueIdentifier)
JobID Title
1 Tag1
1 Tag2
2 Tag2
2 Tag5
2 Tag9
Run Code Online (Sandbox Code Playgroud)
现在,我想通过JobID列对其进行分组并连接Title,所以结果如下
JobID Title
1 Tag1,Tag2
2 Tag2,Tag5,Tag9
Run Code Online (Sandbox Code Playgroud)
我该怎么做?
我已经浪费了整整两天的时间来试图解决这个问题,现在我想出了我的想法,我需要一个紧急的帮助,问题是,我有桌子
表:Sales,SalesId是primary key
---------------------------------------------------
SalesId | SalesDate | Customer| Discount | Remarks
---------------------------------------------------
1 | 01/01/2012| John | 15 | NULL
2 | 01/01/2012| Peter | 25 | NULL
3 | 01/01/2012| Micheal | 35 | NULL
Run Code Online (Sandbox Code Playgroud)
表:SalesBody,的SerialNo是primary key和SalesId是foreign key
---------------------------------------------------
SerialNo | SalesId | Product | Quantity | Rate
---------------------------------------------------
10 | 1 | Pencil | 18 | 20
11 | 1 | pen | 200 | 60
12 …Run Code Online (Sandbox Code Playgroud) 我有以下代码清单
Code Meaning
1 Single
2 Married/Separate
3 Divorced
4 Widowed
8 Not Applicable
99 Not known
Run Code Online (Sandbox Code Playgroud)
我试图使用CTE将这些展平为一行.我有一个CTE解决方案,它使用RowNumber函数来执行此操作.
WITH Flattened (JoinItem, CodeMeaning) AS
(
SELECT 1 AS JoinItem, CAST('' AS VARCHAR(255))
UNION ALL
SELECT f.JoinItem+1, CAST(f.CodeMeaning + ',' + c.CodeMeaning AS VARCHAR(255))
FROM
(
SELECT JoinItem = ROW_NUMBER() OVER (ORDER BY Code),c.Code + ' - ' + c.Meaning AS CodeMeaning
FROM Codes c
) c
INNER JOIN Flattened f
ON f.JoinItem=c.JoinItem
)
SELECT TOP 1 JoinItem, CodeMeaning
FROM Flattened
ORDER …Run Code Online (Sandbox Code Playgroud) 例如我们有一个包含三列的表
Column A | Column B | Column C
-------------------------------
P1 | 10 | A
P1 | 20 | B
P1 | 30 | C
P2 | 30 | D
P2 | 40 | E
Run Code Online (Sandbox Code Playgroud)
我如何在Microsoft SQL中编写 SELECT 查询才能得到这种结果
Column A | Column B | Column C
------------------------------------------
P1 | 10, 20, 30 | A, B, C
P2 | 30, 40 | D, E
Run Code Online (Sandbox Code Playgroud) 我想将以下 MYSQL 查询转换为 MS SQL Server。但是,我确定GROUP_CONCAT2017 年之前的 MS SQL Server 中不存在该函数。SQL SERVER 2017 中有一个函数。有人可以帮助我吗?
SELECT region, GROUP_CONCAT(route_name) AS route_name
FROM route_details
LEFT JOIN ride_details ON route_id = r_id
WHERE region != '' AND service_date = '2019-09-02'
GROUP BY region
Run Code Online (Sandbox Code Playgroud) 我正在使用这个MS SQL脚本:
select NumberId, ART_No, InkColor
from INK_STOCK
Run Code Online (Sandbox Code Playgroud)
我有这样的输出:
NumberId ART_No InkColor
------------------------------------------
0010 23003 BLUE
0010 23003 RED
0010 23003 GREEN
0013 23004 ORANGE
0013 23004 PINK
0013 23004 WHITE
0015 23007 GREEN
0015 23007 PINK
Run Code Online (Sandbox Code Playgroud)
如何使输出应该是这样的:
NumberId ART_No InkColor
------------------------------------------
0010 23003 BLUE, RED, GREEN
0013 23004 ORANGE, PINK, WHITE
0015 23007 GREEN, PINK
Run Code Online (Sandbox Code Playgroud)
谢谢
我正在使用以下查询来提取约会数据:
SELECT app.subject, AL.locationName
FROM FilteredAppointment app
INNER JOIN appointmentlocation AL ON app.activityid = AL.appointment
WHERE app.scheduledstart='2013-07-06 15:00:00.000'
Run Code Online (Sandbox Code Playgroud)
输出如下,有2行(具有两个不同位置的相同约会):

如何修改此查询以仅显示一行,其中两个位置与逗号连接,如下所示:
Column1:(MZN; OTV)*...
Column2:Room1,Room2
谢谢
sql ×11
sql-server ×10
t-sql ×5
string ×2
asp.net-3.5 ×1
database ×1
xml ×1
xpath ×1
xquery ×1