私は現在、過去の請求書日付のリストを取得し、2番目の最終請求書日付を一時テーブルを使用してスニークするT-SQLクエリを持っています。つまり、このクエリは、サードパーティアプリケーションのプリプロセッサで使用する必要があります。このプリプロセッサは、テンポラリテーブルの作成と削除をうまく使用できません。ビューまたはテンポラリテーブルを使用せずに次のT-SQLクエリを書く方法はありますか?最大日付のT-SQLクエリ
SELECT (convert(CHAR(10), dateadd(dd, DateDiff(dd, 0, ltradat), 0), 126)) AS 'DateOnly'
INTO #temp
FROM matter WITH (NOLOCK)
,ledger WITH (NOLOCK)
WHERE mclient = '014134'
AND lmatter = mmatter
AND lzero != 'R'
AND mcurrency LIKE '%'
AND llcode != 'PAY'
GROUP BY ltradat
ORDER BY ltradat
SELECT max(DateOnly)
FROM #temp
WHERE DateOnly < (
SELECT max(DateOnly)
FROM #Temp
)
DROP TABLE #temp
#Tempテーブルには、請求書の日付とその請求書に関連する問題の一覧が示されます。選択すると、リストから1つ少ない請求書日付がソートされます(最も古いものから最も古いものまでソートされます)。
私は#TEMPから*を選択した場合、私のようなリストを得る:
2016-06-08
2016-07-12
2016-07-26
2016-08-05
2016-09-12
私はT-SQLクエリの最後の部分を実行すると、私は私が必要との結果を得る:
を2016-08-05
この結果は、TEMPテーブルまたはVIEWを使用しない単一のクエリから取得できますか?
ありがとうございます。
-Nick
テーブル変数? CTE?クエリの最初または最後に切り捨てるステージングテーブルを作成しますか? – dfundako