【问题标题】:Taking away a column in TSQL带走 SQL 中的一列
【发布时间】:2012-11-15 13:54:08
【问题描述】:
SELECT VendorName, COUNT(*) as Total_Invoices
FROM   Invoices JOIN Vendors ON Invoices.VendorID = Vendors.VendorID
WHERE  Vendors.VendorName = 'IBM'
GROUP BY VendorName
ORDER BY Total_Invoices DESC

它会弹出

VendorName  Total_Invoices
IBM                2

我想做到,所以它只是说

Total_Invoices
     2

没有显示 IBM VendorName,但仍计算 IBM 的总发票

【问题讨论】:

  • 您是否尝试在没有VendorName 的情况下运行查询?

标签: sql sql-server tsql sql-server-2012


【解决方案1】:

在这种情况下,您可以安全地删除 VendorName

SELECT COUNT(*) as Total_Invoices
FROM   Invoices JOIN Vendors ON Invoices.VendorID = Vendors.VendorID
WHERE  Vendors.VendorName = 'IBM'
GROUP BY VendorName
ORDER BY Total_Invoices DESC

select,另一方面,也称为投影。您可以安全地移除它而不会受到任何伤害。但是在GROUP BY 子句中删除它已经是完全不同的事情了。

【讨论】:

  • + 1,你是最快的:)
  • 在这种情况下,我也会删除GROUP BY
  • @Lamak 不,这将是非常不同的事情,两者会产生不同的结果。
  • @JohnWoo WHERE 子句将只返回 IBM,因此您不需要两个版本的 GROUP BY 演示 -- sqlfiddle.com/#!2/91db4/1
  • @bluefeet 谢谢你,因为我在想这个sqlfiddle.com/#!3/b436b/1
【解决方案2】:

您只需从Select 中清除VendorName。 在这种情况下,您不需要使用GROUP BYORDER BY

SELECT COUNT(*) as Total_Invoices
FROM   Invoices JOIN Vendors ON Invoices.VendorID = Vendors.VendorID
WHERE  Vendors.VendorName = 'IBM'

【讨论】:

    【解决方案3】:

    从 SELECT 中删除 VendorName。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-19
      • 1970-01-01
      • 1970-01-01
      • 2011-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多