3

異なるテーブルからの(同じ参照の)2つの日付があり、Table2のSTATUSが「STOP」または「MAX」に等しい場合に差を取得して要約に入れる必要があります。私は日付を引く方法を知っていますが、同じテーブルからのみです。コードを完成させるのは非常に難しいので、私のシナリオをさらに説明するには、以下を参照してください。

Table1

REF#    BEGINDATE   
----   ----------- 
ABC1    12/31/2012   
CDE9    01/01/2013
EFG2    02/01/2013
MJK8    02/03/2013

 

Table2

REF#     ENDDATE      STATUS
----    ---------     ------
CDE9    03/31/2013    STOP
MJK8    05/01/2013    MAX
EFG2    02/05/2013
ABC1    02/21/2013    STOP

これは要約結果です:

STATUS   30 below   30 to 79   80 and up
------   --------   --------   ---------
STOP                    1          1
MAX                                1

これらは追加情報です:

a。Table2のREF#は常にTable1に存在します(これにより、Table1がメインテーブルになります)

b。要約結果の3つの列(以下の30、30から79など)は、STATUSごとの行数です。

とても遠い、これは私が持っているすべてです:

SELECT STATUS, sum(case when *THIS IS WHERE IM STUCK* then 1 else 0 end) as 30 below,
sum(case when *THIS IS WHERE IM STUCK TOO* then 1 else 0 end) as 30 to 79,
sum(case when *NEED HELP IN THIS TOO* then 1 else 0 end) as 80 and up from Table2?
GROUP BY STATUS

誰かが私にこれを正しくする方法を手伝ってくれることを願っています、あなたの迅速な助けに事前に感謝します。=)

4

3 に答える 3

2

DateDiff(day、Date1、Date2)のようなものが必要です...

SELECT t1.REF, 
  SUM(CASE WHEN DateDiff(day, t1.StartDate, t2.EndDate) < 30 THEN 1 ELSE 0 END)
FROM table1 t1 JOIN table2 t2 ON t1.REF = t2.REF
GROUP BY t1.REF
WHERE t2.STATUS in ('MAX', 'STOP')
于 2013-03-06T01:10:34.107 に答える
1

必要なのは参加です。

SELECT t2.STATUS --SUM(case statement here  t1.BEGINDATE, t2.ENDDATE)
FROM dbo.Table1 AS t1
JOIN dbo.Table2 AS t2
ON t1.[REF#] = t2.[REF#]
AND t2.STATUS IN (''STOP','MAX')
GROUP BY t2.STATUS;

そこから、2つの日付の間に必要な計算を行うことができます。

参加チェックアウトの詳細については、 1か月の参加を確認してください。

3つのCASEステートメントは次のようになります。

SUM(CASE WHEN DATEDIFF(DAY,t1.BEGINDATE,t2.ENDDATE) BETWEEN 30 AND 79 THEN 1 ELSE 0 END)
于 2013-03-06T01:19:06.853 に答える
1

これを試してみてください!

SELECT table_1.REF, 

SUM(CASE WHEN DateDiff(day, table_1.StartDate, table_2.EndDate) < 30 THEN 1 ELSE 0 END)
FROM table1 table_1 
JOIN table2 table_2 ON table_1.REF = table_2.REF
GROUP BY table_1.REF

WHERE table_2.STATUS in ('max', 'stop')
于 2013-08-28T03:16:45.300 に答える