慕萊塢森
2019-10-15 11:02:20
在SQL Server 2005中,我有一個表cm_production,其中列出了已投入生產的所有代碼。該表具有ticket_number,program_type,program_name和push_number以及其他一些列。目標:按程序類型和推送編號計算所有DISTINCT程序名稱到目前為止,我有:DECLARE @push_number INT;SET @push_number = [HERE_ADD_NUMBER];SELECT DISTINCT COUNT(*) AS Count, program_type AS [Type] FROM cm_production WHERE push_number=@push_number GROUP BY program_type這讓我感到很困惑,但是它計算的是所有程序名稱,而不是不同的名稱(我不希望它在該查詢中執行)。我想我只是無法解決如何僅選擇不同程序名稱而不選擇它們的問題。或者其他的東西。
3 回答

慕田峪7331174
TA貢獻1828條經驗 獲得超13個贊
按程序類型和推送編號計算所有DISTINCT程序名稱
SELECT COUNT(DISTINCT program_name) AS Count,
program_type AS [Type]
FROM cm_production
WHERE push_number=@push_number
GROUP BY program_type
DISTINCT COUNT(*)將為每個唯一計數返回一行。您想要的是COUNT(DISTINCT <expression>):計算組中每一行的表達式并返回唯一的非空值的數量。

慕雪6442864
TA貢獻1812條經驗 獲得超5個贊
我需要獲取每個不同值的出現次數。該列包含地區信息。我最終得到的簡單SQL查詢是:
SELECT Region, count(*)
FROM item
WHERE Region is not null
GROUP BY Region
這會給我一個清單,例如:
Region, count
Denmark, 4
Sweden, 1
USA, 10

手掌心
TA貢獻1942條經驗 獲得超3個贊
您必須為不同的列創建一個派生表,然后從該表中查詢計數:
SELECT COUNT(*)
FROM (SELECT DISTINCT column1,column2
FROM tablename
WHERE condition ) as dt
這dt是一個派生表。
添加回答
舉報
0/150
提交
取消