【问题标题】:SQL Server SubSelect syntax errorSQL Server SubSelect 语法错误
【发布时间】:2013-07-12 16:53:45
【问题描述】:

我正在尝试执行子选择查询,但它给了我一个错误,我不确定我是否可以执行这种逻辑。

SELECT (SELECT SERV_ACCT, ACCOUNT, SERV_ADDRESS
FROM tblAPSData

JOIN tblMEP_Meters
ON tblMEP_Meters.ServiceAccount = tblAPSData.SERV_ACCT

WHERE SERV_Acct = ServiceAccount
AND INV_DATE > DATEADD(month, -6, getdate())
GROUP BY SERV_ACCT, ACCOUNT, SERV_ADDRESS
HAVING count(SERV_ACCT) = 1) AS AccountMeter

FROM tblMEP_Customers

这是错误消息: 消息 116,第 16 级,状态 1,第 48 行 当子查询不使用 EXISTS 引入时,选择列表中只能指定一个表达式。

我也有这段代码编译没有任何问题,我使用相同的逻辑但不知道为什么它不起作用。 此代码在我运行时有效:

SELECT SiteName = tblMEP_Sites.Name, BillingMonth = DateTimeStamp,
    ElectricConsumption = (SELECT SUM(Consumption)
    FROM tblMEP_Meters (nolock)
    JOIN tblMEP_MonthlyData (nolock)
    ON MeterID = tblMEP_Meters.ID
    WHERE SiteID = tblMEP_Sites.ID
    AND Type = 1
    AND BillingMonth = DATEADD(month, -6, getdate()))

    FROM tblMEP_Customers

【问题讨论】:

    标签: sql sql-server subquery


    【解决方案1】:

    如果你减少上面的代码

    SELECT (SELECT SERV_ACCT, ACCOUNT, SERV_ADDRESS
    FROM tblAPSData 
    ....
    ) AS AccountMeter
    
    FROM tblMEP_Customers
    

    ,您可以看到您正在尝试将 3 个字段 SERV_ACCT, ACCOUNT, SERV_ADDRESS 选择为 AccountMeter,这是不可能的。
    在您的第二个工作示例中,仅选择了一个值 SUM(Consumption)
    由于我无法在您的 SELECT ( ...) AS AccountMeter 查询中检测到对 tblMEP_Customers 的任何引用,因此我无法为所需的输出提供解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-03
      • 2015-12-10
      • 1970-01-01
      • 1970-01-01
      • 2018-11-22
      • 2016-04-17
      相关资源
      最近更新 更多