私は SQL を初めて使用し、その使用時間は限られているので、親切にしてください。以前にプログラムを作成し、NPR でコードを書いたことがありますが、SQL の基本的な知識はあります。SQL は別の種類の獣になる可能性があります。私は実践することで学ぶのが好きで、ここ数日間これにつまずいており、大きな銃を呼ぶ時が来ました! 私は StackOverflow で多くの投稿を読みましたが、あなたのコミュニティが協力して、できない (またはしたくない) 人々の解決策を見つける方法が本当に気に入りました。とにかく、必要なデータを取得するために必要な要件を考えることはできません。私は多数の投稿に目を通し、サブクエリ、その他の DISTINCT、および yuet に関するいくつかの取引を読みましたが、私が抱えている問題を解決できるものを見たことはありません。次の例外を除いて、すべて正常に動作します。
- サブクエリの愚かな列ヘッダーを印刷することができません。
- 返信と日付を含む 1 つのアカウントのみを表示するルールがわかりません。
- #2 の分子を数えます 大きなものは #2 です
ルール: 1. 日付範囲内でいくつのアカウントが表示されても、所有できるアカウントは 1 つだけです。2. 訪問の反応を記録する必要があります。1 つの反応がある場合は、それを分子に追加し、その特定の日付を取得します。応答が「1」のさまざまな日付は問題ではありません。そのうちの 1 つだけをキャプチャしてください。たとえば、同じ UnitNumber を持つ 5 つのアカウントがあり、3 つのアカウントが "1" の応答を持ち、2 つのアカウントが "0" の応答を持っている場合、"1" の 1 つだけをその日付で取得し、分子を増やします。それ以外の場合、それらがすべて 0 の場合、勘定科目の 1 つだけが表示されますが、分子は増加しません。3. 回答の日付を取得する必要があります。
たとえば、M000003206 の下のアカウントは 1 回だけ表示され、応答値は日付が 01/03/13 の 1 で、分母は 13 である必要があります。
*M000003206 1 1/03/2011 should show up in the data, and populate numerator *M000003206 0 1/04/2011 should not show up in the data, and not be in the denominator or the numerator.
NOTES: - The "response" is a field that tracks a bunch of queries 6000 or so. The C.AD.DOCS section can have 5 answers which I dont care about I just want to see if they responded to any of them, if so throw in a 1; if no answer response is a 0. - I havent written the numerator part as I have no idea how to make the rule to limit the account to only show 1 visit - Also I am getting a No column name listed and I've looked but I cant seem to find how to correct this in a sub-query
The numerator (once written) should be 7, for all the responses that are 1.
BTW: I have changes Unit Numbers and admit dates to protect confidential data.
Thank you for any replies!
OUTPUT-------------------------------------------------------------
Denominator 14
UnitNumber no column name no column name
M000001058 1 1/04/2011
M000004955 0 1/03/2011
M000006362 1 1/03/2011
M000006211 1 1/03/2011
M000004212 0 1/03/2011
M000009850 1 1/03/2011
M000003047 0 1/04/2011
*M000003206 1 1/03/2011*
*M000003206 0 1/04/2011*
M000002526 0 1/04/2011
M000000538 1 1/04/2011
M000003813 0 1/03/2011
M000004473 1 1/04/2011
M000004794 1 1/03/2011
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