【问题标题】:Transpose query creates nodes (SQL Server 2008)转置查询创建节点 (SQL Server 2008)
【发布时间】:2011-12-12 16:31:29
【问题描述】:

我终于找到了要执行的查询,以获取一行中一个内容的所有 ID(逗号分隔)。

以下查询成功了:

您不需要查看查询,因为它已经做了应该做的事情。

SELECT 
    taxonomy_item_id, 
    SUBSTRING(
      (SELECT ', ' + CAST(taxonomy_id AS varchar) AS Expr1
       FROM taxonomy_item_tbl AS t2
       WHERE (t1.taxonomy_item_id = taxonomy_item_id) AND (taxonomy_language_id = 2067)
       ORDER BY taxonomy_item_id, taxonomy_id FOR XML PATH('')
      ), 1, 1000) AS taxonomy_ids
FROM 
    taxonomy_item_tbl AS t1
WHERE 
    (taxonomy_language_id = 2067) AND (taxonomy_item_id = 180555)
GROUP BY 
    taxonomy_item_id

唯一的问题是我得到的数据结果:

180555  |   <Expr1>, 404</Expr1><Expr1>, 405</Expr1><Expr1>, 723</Expr1><Expr1>, 1086</Expr1><Expr1>, 1087</Expr1><Expr1>, 1118</Expr1><Expr1>, 1124</Expr1><Expr1>, 1126</Expr1>

我不需要&lt;Expr1&gt; 节点。有没有办法删除这个?如果我在查询中删除AS Expr1,那么它会自动添加回来

谢谢

【问题讨论】:

  • 你是怎么运行这个的? AS Expr1 不应该被添加回来,除非你有一些正在使用的查询生成器
  • 什么是查询生成器?我可以禁用它吗?
  • 我不知道。 “你是如何运行它的”我问......
  • -1 表示仍在使用查询生成器并重复相同的错误stackoverflow.com/q/8486378/27535

标签: sql sql-server-2008 pivot transpose


【解决方案1】:

如果您不想要 &lt;Expr1&gt; - 那就别问了!

你有:

(SELECT ', ' + CAST(taxonomy_id AS varchar) AS Expr1

AS Expr1 导致 &lt;Expr1&gt; 被添加 - 所以不要在那里有那个表达式。

试试

SELECT 
    taxonomy_item_id, 
    SUBSTRING(
      (SELECT ', ' + CAST(taxonomy_id AS VARCHAR) 
       FROM dbo.taxonomy_item_tbl AS t2
       WHERE t1.taxonomy_item_id = taxonomy_item_id
       AND taxonomy_language_id = 2067
       ORDER BY taxonomy_item_id, taxonomy_id 
       FOR XML PATH('')
      ), 1, 1000) AS taxonomy_ids
FROM 
    dbo.taxonomy_item_tbl AS t1
WHERE 
    taxonomy_language_id = 2067
    AND taxonomy_item_id = 180555
GROUP BY 
    taxonomy_item_id

【讨论】:

  • 如果我正确理解问题,我认为某些查询生成器(MSQuery、Access 等)会将其重新添加。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-20
  • 2018-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-18
相关资源
最近更新 更多