C# 在T-SQL中追加数据
我有一个sql transact-sql-sql server 2012,用于从表客户获取客户名称,该表客户具有表详细信息中的有效地址:C# 在T-SQL中追加数据,c#,sql,.net,sql-server-2012,C#,Sql,.net,Sql Server 2012,我有一个sql transact-sql-sql server 2012,用于从表客户获取客户名称,该表客户具有表详细信息中的有效地址: Select Customer.Name, Details.Address from Customer left outer join Details on Details.Customer = Customer.Name 这用于每次从db服务器发回每个客户的每个记录名称行。没有提取多条记录 最近,我需要修改这个sql文本,以便根据数据库获取他们借来的书
Select Customer.Name, Details.Address
from Customer
left outer join Details on Details.Customer = Customer.Name
这用于每次从db服务器发回每个客户的每个记录名称行。没有提取多条记录
最近,我需要修改这个sql文本,以便根据数据库获取他们借来的书籍的名称,该名称保存在另一个表中。现在脚本看起来像:
Select Customer.Name, Details.Address, Lending.BookName
from Customer
left outer join Details on Details.Customer = Customer.Name
left outer join Lending on Lending.CustomerName = Customer.Name
它正在正确地返回记录,但现在我遇到了一个问题。由于客户可以借多本书,因此返回的数据具有同一客户的多行,显示多个书名。根据我的软件规范,我需要为每个客户提取一行,在这一行中,我需要将所有的书名附加到一列中。
有人能帮我吗:如何在一列中为同一记录附加多个数据,例如:
Name Address BookName
Somdip XX Brief History of Time,Headfirst SQL,Headfirst C#
而不是
Name Address BookName
Somdip XX Brief History of Time
Somdip XX Headfirst SQL
Somdip XX Headfirst C#
??试试这个:
SELECT Name,
Address ,
Split.a.value('.', 'VARCHAR(100)') BookName
FROM (SELECT Name,
Address ,
Cast ('<M>' + Replace(BookName, ',', '</M><M>') + '</M>' AS XML) AS Data
FROM [table]) AS A
CROSS APPLY Data.nodes ('/M') AS Split(a)
虽然我认为这通常是一个坏主意——在一个单元格中返回多个数据项——但有很多方法可以实现这一点,其中涉及到不同的性能问题
您要查找的内容如下:我将上面的sql文本与“where”和“order by”子句一起使用,例如:
SELECT Name,
Address ,
Split.a.value('.', 'VARCHAR(100)') BookName
FROM (SELECT Name,
Address ,
Cast ('<M>' + Replace(BookName, ',', '</M><M>') + '</M>' AS XML) AS Data
FROM [table] where ID = '1' order by Name) AS A
CROSS APPLY Data.nodes ('/M') AS Split(a)
这给了我一个错误:ORDER BY子句在视图、内联函数、派生表、子查询和公共表表达式中无效,除非还指定了TOP、OFFSET或FOR XML。查看此组实例模拟:我通过C编程从服务器获取数据集中的值。但是上面的代码是针对xml的…不是吗??!!对不起,我不太懂sql…@SomdipDey这是sql的SERVER@SomdipDey在C中,您可以拆分字符串,u将得到所需的OPHMM。还有一件事,名字、地址和书名来自不同的表格……那么如何处理呢?我如何修改上面的sql来做到这一点?@SomdipDey是的,您可以使用派生表或CTE[table]将是您的派生表/CTE现在将order by子句放在Splita之后,它正在工作,但它正在生成另一个错误:XML解析:第1行,字符23,非法名称字符