レポートの最大日付と詳細を取得しようとしていますが、最新のエントリの詳細ではなく、特定の期間内のすべてのエントリが返されます。TSQLのさまざまな最大日付オプションが機能しない
テーブル名がdbo.vwPupil_EventType
ある:
テキスト、ntext型およびイメージデータ型を比較することができない
SELECT [Pupil ID], [Event Date],[Header Note], [Module ID], [Event ID] AS ID
FROM dbo.vwPupil_EventType EV
WHERE ([Module ID] = 22)
GROUP BY [Event ID],[Pupil ID], [Event Date],[Header Note],[Module ID]
HAVING [Event Date]IN (SELECT MAX([Event Date])
FROM dbo.vwPupil_EventType
WHERE EV.[Event ID] = [Event ID])
ORDER BY [Pupil ID]
:
EventID (int,not null)
PupilID (int,not null)
EventDate (datetime,null)
Header Note(text,null)
Event Type (varchar(100),null)
Module ID (int,null)
1試行がエラーMSG 306を生成しましたこれらの他の2つのオプションを試しましたが、dat内のすべてのエントリを取得していますだけでなく、最新の1のEスパン:
SELECT [Pupil ID], [Event Date], CAST([Header Note]AS VARCHAR(100))NOTE, [Module ID], [Event ID] AS ID
FROM dbo.vwPupil_EventType EV
WHERE ([Module ID] = 22)
GROUP BY [Event ID],[Pupil ID], [Event Date],CAST([Header Note]AS VARCHAR(100)),[Module ID]
HAVING [Event Date]IN (SELECT MAX([Event Date])
FROM dbo.vwPupil_EventType
WHERE EV.[Event ID] = [Event ID])
ORDER BY [Pupil ID]
は、これは一般的に窓関数を使用して解決される
SELECT [Pupil ID], MAX(CAST([Event Date] AS DATETIME)), CAST([Header Note]AS VARCHAR(100))NOTE, [Module ID], [Event ID] AS ID
FROM dbo.vwPupil_EventType EV
WHERE ([Module ID] = 22)
GROUP BY [Event ID],[Pupil ID], [Event Date],CAST([Header Note]AS VARCHAR(100)),[Module ID]
HAVING [Event Date]IN (SELECT MAX([Event Date])
FROM dbo.vwPupil_EventType
WHERE EV.[Event ID] = [Event ID])
ORDER BY [Pupil ID]
役立つかもしれない私は、サブクエリでも '[イベント日付であれば、where句の必要性を全く考えていません] 'はdatetime型ではないので、サブクエリでもサブクエリにもキャストする必要があります。 –
こんにちはJaydipJ、返信いただきありがとうございます。応答はあまり役に立ちません.Sqlの新機能、見た目の例〜のような助けて – newangie