【问题标题】:How can I add column names in each row from select query in SQL Server?如何在 SQL Server 中的选择查询中为每一行添加列名?
【发布时间】:2017-02-14 12:47:28
【问题描述】:

我的表结构是这样的:

Domain    Label1    Label2   ...   LabelN  
foo.com    NULL       X      ...    NULL  
bar.com     Y         Z      ...    NULL  
.  
.  
xyz.com    NULL      NULL    ...      M

我希望输出是这样的(文本格式):

foo.com,Label2:X    
bar.com,Label1:Y|Label2:Z  
.  
.  
xyz.com,Label3:M    

基本上,我想删除 NULL 条目,并且希望列标签出现在最终输出中。我尝试使用 XML 路径,但它将所有行连接在一起并且不会删除 NULL。

有人试图解决这个问题吗?

【问题讨论】:

  • 我建议使用动态 SQL 并从 sys 表中获取列名
  • 我可以从 sys 表中获取列名,但是如何将它们连接到每一行并且不包括表中具有 NULL 值的列? SQL Server 在 python 中是否有类似docs.python.org/3/library/functions.html#zip 的操作?

标签: sql-server tsql azure


【解决方案1】:

我不明白您如何通过在单个查询中加入 sys 表并获得您想要的结果来做到这一点。它可能会在多步骤存储过程中完成,但它会非常难看,而且不是最干净的解决方案。而且我不认为你真的需要,因为你的标签列是固定模式的一部分。

我认为您需要从该表中执行一个简单的选择,然后在代码中遍历结果以构建每行的单行文本。那时您可以只连接标签名称。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-25
    • 2021-04-15
    • 2019-12-30
    相关资源
    最近更新 更多