更改嵌套SubQuery中的列名称

时间:2014-05-12 09:46:16

标签: sql subquery

我试图指定标题为#34; EmailAddress"的子查询列的名称。以下代码是说“没有列名称”'有人可以告诉我我的错误吗?

SELECT     'RFW' + CAST(ALOPS.dbo.PLSupplierAccount.PLSupplierAccountID AS VARCHAR(10)) AS PKnumber,
(SELECT Max(alops.dbo.PLSupplierContactValue.ContactValue)AS EmailAddress
   FROM alops.dbo.PLSupplierAccount as PLSup, ALOPS.dbo.PLSupplierContact, 
      ALOPS.dbo.PLSupplierContactValue ,     ALOPS.dbo.SYSContactType 
  WHERE 
     PLSup.PLSupplierAccountID = alops.dbo.PLSupplierAccount.PLSupplierAccountID
     AND PLSup.PLSupplierAccountID = alops.dbo.PLSupplierContact.PLSupplierAccountID
     AND alops.dbo.PLSupplierContactValue.PLSupplierContactID = 
     alops.dbo.PLSupplierContact.PLSupplierContactID
     AND alops.dbo.SYSContactType.SYSContactTypeID = alops.dbo.PLSupplierContactValue.SYSContactTypeID 
     AND alops.dbo.SYSContactType.Name='E-mail Address') ,
     ALOPS.dbo.PLSupplierAccount.PLSupplierAccountID AS AccountID, 
     ALOPS.dbo.PLSupplierAccount.SupplierAccountNumber AS AccountRef,      
     ALOPS.dbo.PLSupplierAccount.SupplierAccountName AS AccountName, 'RFW' AS Company, 
     ALOPS.dbo.PLSupplierLocation.AddressLine1, ALOPS.dbo.PLSupplierLocation.AddressLine2, 
     ALOPS.dbo.PLSupplierLocation.AddressLine3, 
     ALOPS.dbo.PLSupplierLocation.AddressLine4, ALOPS.dbo.PLSupplierLocation.Postcode,
     (ALOPS.dbo.PLSupplierAccount.MainTelephoneAreaCode + 
     ALOPS.dbo.PLSupplierAccount.MainTelephoneSubscriberNumber) as Telephone
             FROM    
                ALOPS.dbo.PLSupplierAccount INNER JOIN
                ALOPS.dbo.PLSupplierLocation ON ALOPS.dbo.PLSupplierAccount.PLSupplierAccountID =            
                ALOPS.dbo.PLSupplierLocation.PLSupplierAccountID

2 个答案:

答案 0 :(得分:0)

Alias是在错误的地方尝试

(SELECT Max(alops.dbo.PLSupplierContactValue.ContactValue)
FROM alops.dbo.PLSupplierAccount as PLSup, ALOPS.dbo.PLSupplierContact, ALOPS.dbo.PLSupplierContactValue , ALOPS.dbo.SYSContactType) AS EmailAddress

答案 1 :(得分:0)

您还需要为内部选择指定别名,以定义列名称。请检查以下

SELECT     'RFW' + CAST(ALOPS.dbo.PLSupplierAccount.PLSupplierAccountID AS VARCHAR(10)) AS PKnumber,
(SELECT Max(alops.dbo.PLSupplierContactValue.ContactValue)
   FROM alops.dbo.PLSupplierAccount as PLSup, ALOPS.dbo.PLSupplierContact, 
      ALOPS.dbo.PLSupplierContactValue ,     ALOPS.dbo.SYSContactType 
  WHERE 
     PLSup.PLSupplierAccountID = alops.dbo.PLSupplierAccount.PLSupplierAccountID
     AND PLSup.PLSupplierAccountID = alops.dbo.PLSupplierContact.PLSupplierAccountID
     AND alops.dbo.PLSupplierContactValue.PLSupplierContactID = 
     alops.dbo.PLSupplierContact.PLSupplierContactID
     AND alops.dbo.SYSContactType.SYSContactTypeID = alops.dbo.PLSupplierContactValue.SYSContactTypeID 
     AND alops.dbo.SYSContactType.Name='E-mail Address') AS EmailAddress,
     ALOPS.dbo.PLSupplierAccount.PLSupplierAccountID AS AccountID, 
     ALOPS.dbo.PLSupplierAccount.SupplierAccountNumber AS AccountRef,      
     ALOPS.dbo.PLSupplierAccount.SupplierAccountName AS AccountName, 'RFW' AS Company, 
     ALOPS.dbo.PLSupplierLocation.AddressLine1, ALOPS.dbo.PLSupplierLocation.AddressLine2, 
     ALOPS.dbo.PLSupplierLocation.AddressLine3, 
     ALOPS.dbo.PLSupplierLocation.AddressLine4, ALOPS.dbo.PLSupplierLocation.Postcode,
     (ALOPS.dbo.PLSupplierAccount.MainTelephoneAreaCode + 
     ALOPS.dbo.PLSupplierAccount.MainTelephoneSubscriberNumber) as Telephone
             FROM    
                ALOPS.dbo.PLSupplierAccount INNER JOIN
                ALOPS.dbo.PLSupplierLocation ON ALOPS.dbo.PLSupplierAccount.PLSupplierAccountID =            
                ALOPS.dbo.PLSupplierLocation.PLSupplierAccountID

希望这有帮助