【问题标题】:Adding a value to a column that indicates a record is from which table + sql给列加值,表示一条记录来自哪个表+sql
【发布时间】:2014-09-15 08:57:18
【问题描述】:

我有三个表(DocIncome、DocOutgoing 和 Financial),它们的每条记录都有一个特定的 ID 和它发生的日期。

我不是这方面的专家,但我写了一个查询来将我需要的所有信息都放在一个输出中,

   SELECT        [DepositNo],[ID], [Submitdate]
   FROM            [Doc_Income]
   WHERE        (DepositNo = 7081)

   UNION

   SELECT        [DepositNo],[ID], [TransferDate]
   FROM            [Doc_Outgoing]
   WHERE        (DepositNo = 7081)

   UNION

   SELECT            [Tansactions_Details].[DepositNo], [Transactions_Deposits].[ID], [Transactions_Deposits].[TransDate]
   FROM        [Tansactions_Details], [Transactions_Deposits]
   WHERE       [DepositNo]=7081 AND ([Tansactions_Details].[Ref_TransactionID] = [Transactions_Deposits].[ID])

   ORDER BY Submitdate

假设这是输出:

DepositNo|    ID    |  Date
  7081   |   7081   |  2006-10-28 00:00:00.000
  7081   |   21121  |  2006-10-28 00:00:00.000
  7081   |   21122  |  2006-11-21 00:00:00.000
  7081   |   21880  |  2008-03-16 16:41:27.000
  7081   |   23674  |  2008-10-14 11:13:58.000

但是我该如何指出,例如记录#1 来自收入表?因为我会在代码中需要这些信息。

谢谢。

【问题讨论】:

    标签: mysql sql sql-server rows calculated-columns


    【解决方案1】:

    您可以在输出中添加自己的列,方法是提供一个文字字符串并像这样命名该列:

    SELECT Col1, Col2, 'SomeText' AS MyColumn
    FROM MyTable
    

    这使您的查询看起来像这样:

    SELECT        [DepositNo],[ID], [Submitdate], 'DocIncome' AS TableName
    FROM            [Doc_Income]
    WHERE        (DepositNo = 7081)
    
    UNION
    
    SELECT        [DepositNo],[ID], [TransferDate], 'DocOutgoing' AS TableName
    FROM            [Doc_Outgoing]
    WHERE        (DepositNo = 7081)
    
    UNION
    
    SELECT            [Tansactions_Details].[DepositNo], [Transactions_Deposits].[ID], [Transactions_Deposits].[TransDate], 'Doc_Income' AS TableName
    FROM        [Tansactions_Details], [Financial]
    WHERE       [DepositNo]=7081 AND ([Tansactions_Details].[Ref_TransactionID] = [Transactions_Deposits].[ID])
    
    ORDER BY Submitdate
    

    【讨论】:

      【解决方案2】:

      在联合查询中添加一个带有字符串的列来标识表名,例如

      SELECT        [DepositNo],[ID], [Submitdate], 'INCOME_TABLE' as TableName
         FROM            [Doc_Income]
         WHERE        (DepositNo = 7081)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-08-31
        • 1970-01-01
        • 2021-01-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-08
        • 1970-01-01
        相关资源
        最近更新 更多