【问题标题】:How can I display tablenames in resultheader of SQL Server 2008 query如何在 SQL Server 2008 查询的结果标题中显示表名
【发布时间】:2017-11-02 11:18:11
【问题描述】:

我正在分析一个大型查询,其中包含在不同表上的大量连接,这些连接都在连接中获得别名。有些表使用不同的别名连接了两次。

例如来自answer的代码:

SELECT *
FROM Blank b
INNER JOIN Ticket t ON b.BlankCode = t.Blank_BlankCode
INNER JOIN MCO_Blank mb ON b.BlankCode = mb.Blank_BlankCode
INNER JOIN Purchase p1 ON  t.PurchaseID = p1.PurchaseID
INNER JOIN Purchase p2 ON mb.PurchaseID = p2.PurchaseID
INNER JOIN Payment pa1 ON t.PurchaseID = pa1.PurchaseID
INNER JOIN Payment pa2 ON mc.PurchaseID = pa2.PurchaseID
WHERE pa1.Status = "Paid";

我希望我的结果网格在列中显示表格别名。除了为select 中的每一列使用别名之外,还有其他可能吗?

所以我的列标题应该是这样的:

b.BlankTypeCode|b.BlankCode|pa1.Amount|pa1.Type|p1.PurchaseDate| pa2.DatePaid

而不是

BlankTypeCode|BlankCode|Amount|Type|PurchaseDate|DatePaid

【问题讨论】:

    标签: sql sql-server sql-server-2008 ssms resultset


    【解决方案1】:

    使用这个

    SELECT b.BlankTypeCode AS [b.BlankTypeCode]
    , b.BlankCode AS [b.BlankCode]
    , pa1.Amount AS [pa1.Amount]
    , pa1.Type AS [pa1.Type]
    , p1.PurchaseDate AS [p1.PurchaseDate]
    , pa2.DatePaid AS [pa2.DatePaid]
    
    FROM Blank b
    INNER JOIN Ticket t
    ON b.BlankCode = t.Blank_BlankCode
    INNER JOIN MCO_Blank mb
    ON b.BlankCode = mb.Blank_BlankCode
    INNER JOIN Purchase p1
    ON  t.PurchaseID = p1.PurchaseID
    INNER JOIN Purchase p2
    ON mb.PurchaseID = p2.PurchaseID
    INNER JOIN Payment pa1
    ON t.PurchaseID = pa1.PurchaseID
    INNER JOIN Payment pa2
    ON mc.PurchaseID = pa2.PurchaseID
    WHERE pa1.Status = "Paid";
    

    【讨论】:

    • 感谢您的回复。我知道如果我只有 6 列要显示,那将是一个不错的选择,但是当我正在分析查询并有超过 20 列时。也许我应该指定我正在使用select * from
    • Sander,不要使用select *,而是转到对象资源管理器中的表格,展开表格,然后将列文件夹拖到工作窗口。这将为您填写所有列名。
    • @RussAwesome 这是一个很棒的建议!我意识到编写查询并将其显示在查询设计器中的方法不止一种。在那里,ssms 重写了我的查询,将 * 替换为所有连接中的所有列。现在,我可以轻松地将列拆分为带有别名的列。
    【解决方案2】:

    您必须为选择查询中的每一列设置别名,但有一种稍快的方法可以做到这一点。将鼠标光标放在b.BlankCode 之前,然后按住 Alt 键,单击并拖动以选择pa2.DatePaid 之后的几个空格。

    请按Ctrl + C

    现在在b.BlankCode 之后输入几个空格(以确保您超过了最突出位的垂直列,然后按Ctrl + V

    这是为您的列创建别名的快速方法,您也可以通过这种方式在多个列中键入内容。

    【讨论】:

    • 除了在设计器窗口中显示查询外,这简直是一种享受!
    【解决方案3】:

    不建议使用空格或点(.) 或任何其他特殊字符作为列名

    但如果你需要,你可以像这样改变它:

    像这样更改代码:

        SELECT 
    b.BlankTypeCode as "b.BlankTypeCode"
        , b.BlankCode as "b.BlankCode "
        , pa1.Amount as "pa1.Amount"
        , pa1.Type as "pa1.Type"
        , p1.PurchaseDate as "p1.PurchaseDate"
        , pa2.DatePaid as "pa2.DatePaid"
    
        FROM Blank b
        INNER JOIN Ticket t
        ON b.BlankCode = t.Blank_BlankCode
        INNER JOIN MCO_Blank mb
        ON b.BlankCode = mb.Blank_BlankCode
        INNER JOIN Purchase p1
        ON  t.PurchaseID = p1.PurchaseID
        INNER JOIN Purchase p2
        ON mb.PurchaseID = p2.PurchaseID
        INNER JOIN Payment pa1
        ON t.PurchaseID = pa1.PurchaseID
        INNER JOIN Payment pa2
        ON mc.PurchaseID = pa2.PurchaseID
        WHERE pa1.Status = "Paid";
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-17
      • 1970-01-01
      相关资源
      最近更新 更多