存储过程,在一行中返回重复的列名称,并将1-> N转换为字符串

时间:2014-10-04 17:04:53

标签: sql stored-procedures azure-sql-database

我正在尝试将以下所有内容放在一个返回单行的存储过程中,因为数据在Sql Azure上运行,并且它的规则是在单个查询中执行所有操作,只返回一次。

我有以下表格:

Person (
    PersonId
    FirstName
    ...
)
CompanyDomains (
    CompanyId
    EmailDomain
)
Company (
    CompanyId
    CompanyName
    Billing_PersonId
    Admin_PersonId
    ...
)

我这里有两个问题。第一个是我想获取Company行的所有元素,以及2 Person数据行。加入很容易。但是2人列的列将具有重复的名称。我可以逐个'做',这很痛苦,因为数据库架构仍然处于不稳定状态。是否有一种全局的方式来应用'as',因此从Billing_PersonId引入的所有列都会在列名前面添加Billing_,而管理列名称前面有Admin_?

第二个是公司域名的1> N列表。有没有办法拉出所有这些并添加一个包含“domain1; domain2;”的单个字符串的列在里面?我们在CompanyDomain表中有不同的域名,因此我们可以快速找到拥有任何域名的公司。但是当我在公司读书时,单个字符串工作正常。

我知道单个SQL选择得很好。但是我对存储过程的经验很少(除了调用它们之外),所以我在这里问的可能是基本的。如果是的话,抱歉。而且,这是针对Sql Azure的。

谢谢 - 戴夫

1 个答案:

答案 0 :(得分:0)

如果您使用的是Azure,那么您的应用程序应该能够解析XML。

编写一个存储过程来连接这三个表,选择给定像公司ID这样的输入的数据,并返回一个包含所有三个信息的xml记录。

请查看以下参考资料。

FOR XML

http://msdn.microsoft.com/en-us/library/ms178107.aspx

创建PROCEUDRE

http://msdn.microsoft.com/en-us/library/ms187926.aspx

如果您需要更多帮助,则需要发布包含样本数据的简单模式。

使用我的示例以下为SCHEMA + DATA

sql select a field into 2 columns

1 - 没有详细信息,没有人能够帮助你。

2 - 自己尝试一下。我可以给你答案,但你不会学到任何东西。

此致

约翰