我有一個資料庫,其中有多個公司名稱。我需要進行查詢以找到:公司名稱、條目數、最新條目的日期。
最好的順序應該是最新條目的日期(但即使在 excel 中我也可以解決這個問題)
SELECT
/*this is the list of companies with distinct name */
DISTINCT(K.COMPANY) AS company_name,
/*where I count entries*/
(SELECT COUNT(KK.COMPANIES) FROM COMPANIES KK
WHERE KK.COMPANY = K.company_name) AS company_count,
/*where I try to get newest entry date*/
(SELECT TOP 1 ENTRY_DATE FROM COMPANIES KKK
WHERE KKK.COMPANY = K.company_name
ORDER BY KKK.ENTRY_DATE DESC) AS company_date
FROM
COMPANIES K
WHERE
K.ENTRY_DATE > '20211004 00:00:00'
ORDER BY
K.ID_KAMSOFT DESC
我收到一個錯誤:
無效的列名
在子查詢中。基本上,子查詢在條件中看不到來自外部查詢的資料xxx.COMPANY = K.company_name。
它應該很簡單,但它不起作用。
uj5u.com熱心網友回復:
不需要使用子查詢,直接試試 GROUP BY
SELECT
K.COMPANY AS company_name,
COUNT(1) AS company_count,
MAX(ENTRY_DATE) AS company_date
FROM
COMPANIES K
WHERE
K.ENTRY_DATE > '20211004 00:00:00'
GROUP BY
K.COMPANY
ORDER BY
3 DESC
uj5u.com熱心網友回復:
選擇的 answear 顯然更好,但這也可以:
(正如@Nikola Markovinovi? 所說,您只需要使用非別名即可)
SELECT
/*this is the list of companies with distinct name */
DISTINCT(K.COMPANY) AS company_name,
/*where I count entries*/
(SELECT COUNT(KK.COMPANIES) FROM COMPANIES KK
WHERE KK.COMPANY = K.COMPANY) AS company_count,
/*where I try to get newest entry date*/
(SELECT TOP 1 ENTRY_DATE FROM COMPANIES KKK
WHERE KKK.COMPANY = K.COMPANY
ORDER BY KKK.ENTRY_DATE DESC) AS company_date
FROM
COMPANIES K
WHERE
K.ENTRY_DATE > '20211004 00:00:00'
ORDER BY
K.ID_KAMSOFT DESC
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/322826.html
標籤:sql sql-server 数据库 查询语句
上一篇:如何根據這些行中的任何列可能發生更改的可能性替換/更新多行?
下一篇:單個查詢中不同條件的SQL計數
