1

我在Windows 7SQL:是否可以將這兩個SQL語句合併爲一個查詢?

的MS SQL Server 2014數據庫中我有一個表命名Orders,它看起來像這樣:

OrderID | CustomerID | OrderDate | ... 
---------------------------------------- 
1028  90   2015-10-10 
... 
2416  68   2016-02-12 

我需要做兩兩件事:

  1. 客戶總數
  2. 今年的客戶數量。

我在SQL初學者,但我設法寫在我的應用程序2條SQL語句,似乎做的工作:

對於要求#1

SELECT COUNT(DISTINCT CustomerID) FROM Orders; // result = 74 

對於要求#2 :

SELECT COUNT(DISTINCT CustomerID) FROM Orders WHERE OrderDate >= '2016-01-01'; // result = 34 

我想知道是否有可能合併/組合莫名其妙上述2 SQL成一個查詢語句...?當然,我需要兩個結果:總客戶(以上情況爲74)以及今年的客戶(即34)。

數據庫是一個遠程數據庫,所以任何想法來加速查詢性能是非常歡迎的。

+2

你爲什麼標記MySQL和SQL服務器-CE,如果您的問與答uestion是關於SQL Server 2014的?我已經刪除它們。 –

+0

嘿嘿,mysql是'建議標籤',sql-server-ce是其他用戶添加的。感謝您的編輯。 –

+0

我們有2個答案(目前),見下文。我測試了兩者,兩者都工作正常。哪一個是**更快**還是他們的速度相同? –

回答

4

使用條件彙總:

SELECT COUNT(DISTINCT CustomerID) as Total, 
     COUNT(DISTINCT CASE WHEN OrderDate >= '2016-01-01' THEN CustomerID END) as Total_2016 
FROM Orders; 
1

您可以將數據合併水平作爲在前面的回答也可以將這些垂直使用UNION,這樣的結合,如果你認爲你需要一個表格的形式:

SELECT 'Total Customers' As Description, COUNT(DISTINCT CustomerID) As Number FROM Orders // total = 74 
Union ALL 
SELECT '2016 Customers' AS Description, COUNT(DISTINCT CustomerID) As Number FROM Orders WHERE OrderDate >= '2016-01-01'; // this_year = 34