次のようなテーブルがあります。
表:
CUSTTRIPID TPTRIPID CUSTOMERID ENTRY_TOLLTXNID EXIT_TOLLTXNID ENTRYTRIPDATETIME EXITTRIPDATETIME TRIPIDENTMETHOD TRIPCHARGETYPE ENTRYLANEID ENTRYPLAZAID EXITLANEID EXITPLAZAID VEHICLENUMBER VEHICLESTATE VEHICLECLASS VEHICLEID TAGREFID TOLLAMOUNT FEEAMOUNTS DISCOUNTSAMOUNT OUTSTANDINGAMOUNT TRIPSTAGEID TRIPSTATUSID TRIPSTATUSDATE POSTEDDATE PAYMENTSTATUSID CREATEDDATE CREATEDUSER UPDATEDDATE UPDATEDUSER REFLINKTRIPID PLAZA
39038181 34040337 20272679 35126165 35126165 2017-05-04 08:15:54.000 2017-05-04 08:15:54.000 980 P NULL NULL NULL NULL KA03D8435 KA VC10 272614 34161FA8203289720249F4C0 30.00 0.00 0.00 30.00 3 1 2017-05-04 08:31:54.657 2017-05-04 08:31:54.657 456 2017-05-04 08:32:11.130 TRIPPOST 2017-05-04 08:32:11.130 TRIPPOST 0 BangaloreNelamangalaTollPlaza
時間とともに2つ以上のレコードをCUSTOMERID
取得したいので、このクエリを作成して結果を得ました。
メインクエリ:
SELECT TOP (10) [CUSTOMERID] , [ENTRYTRIPDATETIME]
FROM [ISSUER].[TOLLPLUS].[TP_CUSTOMERTRIPS]
GROUP BY [CUSTOMERID],[ENTRYTRIPDATETIME]
HAVING COUNT(*) > 2
結果:
CUSTOMERID ENTRYTRIPDATETIME
20063381 2016-12-08 00:24:35.000
20010438 2016-12-16 22:16:55.000
20015278 2017-01-28 05:18:20.000
20108092 2017-02-10 00:37:09.000
20013275 2017-01-06 07:42:05.000
20018833 2017-01-27 04:53:32.000
20113994 2017-01-27 01:13:44.000
20199820 2017-01-27 05:34:24.000
20124122 2017-02-01 02:47:01.000
20240710 2017-03-21 13:02:18.000
しかし、私の要件は、日付と時刻をabobe結果で分割することです。つまり、3つの列があるはずなので、私の質問は、以下のクエリをどこに書き込むことができるかですMain Query?
CONVERT(VARCHAR(10),[ENTRYTRIPDATETIME],101) as DatePart,
CONVERT(VARCHAR(10),[ENTRYTRIPDATETIME],108) as TimePart
あなたはそれをほとんど得る:
SELECT TOP (10) [CUSTOMERID],
CONVERT(VARCHAR(20), [ENTRYTRIPDATETIME], 101) AS DATEPART,
CONVERT(VARCHAR(20), [ENTRYTRIPDATETIME], 108) AS TIMEPART
FROM [TP_CUSTOMERTRIPS]
GROUP BY [CUSTOMERID],[ENTRYTRIPDATETIME]
HAVING COUNT(*) > 2;
SELECT TOP (10) [CUSTOMERID], CONVERT(VARCHAR(20), [ENTRYTRIPDATETIME], 101) AS DATEPART, CONVERT(VARCHAR(20), [ENTRYTRIPDATETIME], 108) AS TIMEPART FROM [TP_CUSTOMERTRIPS] GROUP BY [CUSTOMERID],[ENTRYTRIPDATETIME] HAVING COUNT(*) > 2; GO
CUSTOMERID | DATEPART | TIMEPART ---------:| :------ :------- 20063381 | 2016年12月8日| 00:24:35 20010438 | 2016年12月16日| 22:16:55 20013275 | 2017年1月6日| 07:42:05 20113994 | 2017年1月27日| 01:13:44 20018833 | 2017年1月27日| 04:53:32 20199820 | 2017年1月27日| 05:34:24 20015278 | 2017年1月28日| 05:18:20 20124122 | 2017年2月1日| 02:47:01 20108092 | 2017年2月10日| 00:37:09 20240710 | 2017年3月21日| 13:02:18
db <> fiddle ---(ここ
別の方法:
SELECT TOP (10) [CUSTOMERID],
[DATEPART] = CONVERT(date, [ENTRYTRIPDATETIME]),
[TIMEPART] = CONVERT(time, [ENTRYTRIPDATETIME])
FROM [ISSUER].[TOLLPLUS].[TP_CUSTOMERTRIPS]
GROUP BY [CUSTOMERID],[ENTRYTRIPDATETIME]
HAVING COUNT(*) > 2;
また、プレゼンテーションレイヤーでこれができないのはなぜですか?