我是SQL新手,使用時間有限,所以請客氣。我已經編寫過NPR,並且在NPR中編寫代碼,但是我擁有SQL的基本知識,並且SQL可以是一種不同類型的野獸。我喜歡通過這種方式來學習,並且已經在這幾天磕磕絆絆了,現在我打電話給大槍!我已經在StackOverflow上閱讀了許多文章,並且非常喜歡你的社區如何協同工作,找到解決方案,幫助那些迴應並幫助他人的人們做得不錯(或不會)。無論如何,我只是不能想出我需要的數據來獲取我需要的數據。我查看了大量的帖子,閱讀了一堆,並處理了一些子查詢,其他人處理了DISTINCT,而其他人加入,但我還沒有看到可以解決我遇到的問題。一切工作正常,但以下例外:只顯示一個帳號及其回覆和日期
- 我不能得到愚蠢的列標題的子查詢打印。
- 我不能找出規則顯示只有1個帳戶與其迴應和日期。
- 算的#2 大一個分子爲#2
規則:1。 我只能有一個帳戶的日期範圍內,無論顯示有多少了。 2.我必須記錄訪問的響應,如果有1個響應將其添加到分子並採取該特定日期。變化的日期與「1」的迴應無關緊要,只捕獲其中的一個。因此,例如,如果有5個帳號具有相同的UnitNumber,3個響應爲「1」,2個響應爲「0」,則只抓取其中一個「1」的日期並增加分子;否則如果他們都是0只顯示其中一個帳戶但不增加分子。 3.我必須記錄回覆的日期。
因此,例如:下面M000003206該帳戶應當只顯示一次,並且響應值應爲1與13年1月3日的日期和分母應13.
* M000003206 1 1/03/2011應顯示在數據中,並填寫分子 * M000003206 0 1/04/2011不應出現在數據中,而不在分母或分子中。
注意: - 「響應」是一個跟蹤一堆查詢6000左右的字段。 C.AD.DOCS部分可以有5個我不關心的答案,我只是想看看他們是否迴應了他們,如果是的話就扔1;如果沒有答案響應是0. - 我還沒有寫分子的一部分,因爲我不知道如何使規則限制帳戶只顯示1次訪問 - 此外,我得到一個沒有列名稱列出,我已經看着,但我不能似乎找到如何糾正這一個子查詢
的分子(一次寫入)應該是7,對於所有這些1.
BTW的迴應:我有變化單元號和承認保護機密數據的日期。
謝謝你的回覆!
OUTPUT --------------------------------------------- ----------------
分母14
UnitNumber沒有列名沒有列名
M000001058 2011年1月4日
M000004955 2011年1月3日
M000006362 2011年1月3日
M000006211 2011年1月3日
M000004212 2011年1月3日
M000009850 1/03/2011
M000003047 2011年1月4日
* M000003206 1/03/2011 *
* M000003206 1/04/2011 *
M000002526 1/04/2011
M000000538 1/04/2011
M000003813 2011年1月3日
M000004473 2011年1月4日
M000004794 1 2011年1月3日
Should be Should be
Response AdmitDate
CODE ----- -------------------------------------------------- ------------
use livedb
DECLARE @StartDate DateTime,
@EndDate DateTime
SET @StartDate = '1/03/2011 00:00:00.000'
SET @EndDate = '1/05/2011 00:00:00.000'
SELECT DISTINCT COUNT(UnitNumber) AS Denominator
FROM AbstractData
WHERE (AbstractData.AdmitDateTime BETWEEN @StartDate and @EndDate)
and (AbstractData.BirthDateTime < '1946-09-29 00:00:00.000')
and (AbstractData.PtStatus IN ('IN','INO'))
SELECT DISTINCT AbstractData.UnitNumber AS UnitNumber,
(SELECT MAX(CASE WHEN AbsQueriesMult.GroupResponse = 'C.AD.DOCS' THEN 1 ELSE 0 END) AS Response
FROM AbsQueriesMult WHERE AbstractData.AbstractID = AbsQueriesMult.AbstractID),
(SELECT CONVERT(VARCHAR(12),AbstractData.AdmitDateTime,101) AS AdmitDate)
FROM AbstractData
WHERE (AbstractData.AdmitDateTime BETWEEN @StartDate and @EndDate)
and (AbstractData.BirthDateTime < '1946-09-29 00:00:00.000')
and (AbstractData.PtStatus IN ('IN','INO'))
ORDER BY UnitNumber
閱讀完第一段後,我真的很想幫忙,但是很難完全按照你的所有細節。如果你將問題歸結爲仍然存在你所關心的所有問題的最小問題,那對我們其他人將會非常有幫助。如果這仍然是一個大問題,請將問題分解成更小的塊。 SQLFiddle也很有幫助。如果可以,請使用簡化的模式和樣本數據創建一個。 –