我需要找到記錄多個性別的患者。 (我希望我能知道如何創建一個表。)找到多種性別的患者
[Hospital Number] [Sex Code]
0000001 M
0000002 F
0000003 M
0000003 F
在這裏我們可以看到患者1和2是好的,但患者3具有多個性別。 (系統中有4種可用的性別)。
列爲[Hospital Number]
和[Sex Code]
,該表稱爲Table1
。
我需要找到記錄多個性別的患者。 (我希望我能知道如何創建一個表。)找到多種性別的患者
[Hospital Number] [Sex Code]
0000001 M
0000002 F
0000003 M
0000003 F
在這裏我們可以看到患者1和2是好的,但患者3具有多個性別。 (系統中有4種可用的性別)。
列爲[Hospital Number]
和[Sex Code]
,該表稱爲Table1
。
替代解決方案,做一個自我聯接:
select distinct p1.[hospital number]
FROM patients AS p1
INNER JOIN patients AS p2
ON p1.[hospital number] = p2.[hospital number]
AND p1.[Sex code] <> p2.[Sex code]
返回[hospital number]
如果同一[hospital number]
但不同[Sex code]
被發現。
現根據HarveyFrench的建議編輯!
雖然在標準的SQL您只需使用GROUP BY查詢和COUNT(DISTINCT)是這樣的:如果你使用Microsoft Access
SELECT [hospital number]
FROM patients
GROUP BY [hospital number]
HAVING COUNT(DISTINCT [Sex Code])>1
你需要使用一個不同的解決方案,因爲COUNT DISTINCT是不提供。有多種方法可以解決你的問題,其中之一是使用子查詢:
SELECT [hospital name]
FROM (
SELECT DISTINCT [hospital name], [Sex code]
FROM Patients
) AS s
GROUP BY [hospital name]
HAVING COUNT(*)>1
請注意,使用COUNT(*)的子查詢將包括具有「空」的性別(同時計數不同的查詢將患者只計數非空值)。
您可能需要使用
COUNT(*)>1
返回有多個性別(也空和非空性別)的患者。如果你只是想忽略空,你可以使用:
COUNT([hospital number])>1
感謝您的建議和意見。我確實嘗試了一些東西,但他們沒有工作,所以我不想在這篇文章中填寫不必要的評論。好的工作fthiella,如果我有足夠的聲譽,我會用一個加號標記答案。 – Paul
SQL是通用的(Oracle,MS Access等)我認爲你的意思是「在SQL Server中......」,這與MS Access問題無關:) – Fionnuala
@Fionnuala是的,它與問題本身無關,但我的意思是:爲MS Access使用子查詢(或最小/最大喜歡戈登的答案),但如果你的dbms支持計數不同,最好使用計數不同 - 也很重要的是要注意,一個子查詢與計數(*)將處理空值不同於具有不同計數的查詢 – fthiella
你不需要MS Access中的子查詢。您可以比較最小值和最大值:
SELECT [hospital number]
FROM patients
GROUP BY [hospital number]
HAVING MIN([Sex Code]) <> MAX([Sex Code]);
這應該也會有比count更好的性能。其中[Sex Code]
是NULL
和呈現彼此價值它不會返回行(既不會COUNT(DISTINCT)
,即NULL
被忽略,這是很容易解決的,但你要如何處理NULL
目前還不清楚。
對我來說幸運的是我不能在這個特定的數據庫中有NULL值 – Paul
有趣的是,你聲明的結果比jarlh少3,結果我確實有NULL性別。典型。但它有效,所以再次感謝。 – Paul
在這種情況下,用nz([sex code],0)替換[sex code],以便處理空值。 – HarveyFrench
。或者也可以簡單
SELECT [hospital number]
FROM patients
GROUP BY [hospital number]
HAVING COUNT(*)>1
我很喜歡這個解釋的簡單性,但是它強調了忽略提及每個記錄可以(並且具有)具有相同性別的多個條目,因此在上面的例子中可能有多個條目作爲患者1的M男 – Paul
這就是「MultiGender」嗎?我以前沒聽說過。 TransGeneder是的,但接下來呢! ;-) – HarveyFrench
未知和不確定是geniune選項,但我們最終也會得到類似「4」的廢話 – Paul
你嘗試過什麼 –
每日提示的:GROUP BY和HAVING COUNT(DISTINCT) – jarlh
MS SQL合併:*從表1組選擇hospital_number具有hospital_number計數(sex_code)> 1 *。您需要將此查詢轉換爲ms-access語法。 – niksofteng