[英]SQL Server sub-query
我正在嘗試編寫一個查詢,以顯示在10天的時間內筆芯txn的數量和數量以及#個唯一的pt,但遇到了一些錯誤。 我想知道您是否可以對我的查詢出了什么問題提供一些見解。
我希望每個站點都能獲得#個唯一的患者,但相反,我每一行都會得到相同的數字...
我相信我在子查詢部分中遺漏了一些東西,但是我似乎無法弄清楚出什么問題了。 有什么想法嗎?
SELECT
QB.vw_Pocket.PocketName As StationName,
COUNT(*) AS [# of refill txns],
(SELECT COUNT(DISTINCT QB.vw_PocketAccess.PatientKey) AS [# of pt]
FROM QB.vw_PocketAccess
WHERE QB.vw_PocketAccess.ClientKey = 10273
AND QB.vw_PocketAccess.TransactionDateTime BETWEEN CONVERT(DATE, DATEADD(day, -10, GetDate()))
AND CONVERT(DATE, DATEADD(day, 0, GetDate()))) AS [#of Pt]
FROM
QB.vw_PocketAccess
INNER JOIN
QB.vw_Med ON QB.vw_Med.MedKey = QB.vw_PocketAccess.MedKey
INNER JOIN
QB.vw_Pocket ON QB.vw_Pocket.PocketKey = QB.vw_PocketAccess.PocketKey
INNER JOIN
QB.vw_TransactionType ON QB.vw_PocketAccess.TransactionTypeKey = QB.vw_TransactionType.TransactionTypeKey
WHERE
QB.vw_PocketAccess.ClientKey = 10273
AND QB.vw_Med.ClientKey = 10273
AND QB.vw_Pocket.ClientKey = 10273
AND QB.vw_PocketAccess.TransactionDateTime BETWEEN CONVERT(DATE, DATEADD(day, -10, GetDate()))
AND CONVERT(DATE, DATEADD(day, 0, GetDate()))
AND QB.vw_PocketAccess.TransactionTypeKey = 3
GROUP BY
QB.vw_Pocket.PocketName
您需要關聯子查詢。 現在您的子查詢將只返回vw_PocketAccess
表中的計數, vw_PocketAccess
包含過濾器ClientKey = 10273
和TransactionDateTime BETWEEN CONVERT(DATE, DATEADD(day, -10, GetDate())) AND CONVERT(DATE, DATEADD(day, 0, GetDate()))
要使子查詢返回每個工作站,您需要將子查詢與外部查詢鏈接。 這樣的事情。
(
SELECT Count(DISTINCT qb.vw_pocketaccess.patientkey) AS [# of pt]
FROM qb.vw_pocketaccess
WHERE qb.vw_pocketaccess.station = station from outer tables --replace with the staion column
AND qb.vw_pocketaccess.clientkey = 10273
AND qb.vw_pocketaccess.transactiondatetime BETWEEN CONVERT(DATE, Dateadd(day, -10, Getdate()))
AND CONVERT(DATE, Dateadd(day, 0, Getdate()))
) as [#of Pt]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.