【发布时间】:2017-07-09 15:29:42
【问题描述】:
我有一个表“PurchaseOrder”。当列的描述不为空时,我想选择数据。然后用它的描述替换列的名称。
表 PurchaseOrder
ID | Product | Use | Price | Comment
-----------------------------------------------------
1 | Cellphone | true | 100 |
2 | Car | false | 10 |
3 | Table | true | 200 |
栏目
Name | Description
---------------------------
ID | Index
Produce | Name
Use |
Price | Sale
Comment |
选择结果将是
Index | Name | Sale
--------------------------------
1 | Cellphone | 100
2 | Car | 10
3 | Table | 200
现在,我只得到带有描述的列
if object_id('tempdb..#dt') is not null drop table #dt
select
sc.column_id [Position],
sc.name [Column],
sc.max_length [Length],
sep.value [Description]
into #dt
from sys.tables st
inner join sys.columns sc on st.object_id = sc.object_id
left join sys.extended_properties sep on st.object_id = sep.major_id
and sc.column_id = sep.minor_id
and sep.name = 'MS_Description'
where st.name = 'PurchaseOrder' and sep.value is not null
如何生成最终的数据表?
【问题讨论】:
-
这看起来应该在应用程序而不是数据库级别处理。
Description可能匹配另一个列名,列名有不方便的字符,...。我倾向于编写一个存储过程,它返回两个记录集(描述和数据)或一个带有描述的输出参数和一个带有数据的记录集。 -
是的,如果由应用程序处理会更容易。我只是想知道它真的不能通过存储过程处理吗?
-
如果我正确理解了您的问题,我在下面发布的代码应该会产生预期的结果。
-
@JasonByrd,你解决它。
标签: c# sql-server tsql