Tôi đã tìm kiếm cao và thấp trong nhiều tuần để tìm giải pháp cho vấn đề của mình.Hợp nhất các cột bắt đầu và kết thúc thành một cột
Sự cố của tôi như sau:
A có bảng có tọa độ bắt đầu và kết thúc và ngày từ nhà cung cấp dịch vụ đo từ xa trên xe.
Tôi cần hợp nhất các thành một cột để giải pháp báo cáo của chúng tôi có thể vẽ chúng.
Một số ví dụ dữ liệu như sau:
DECLARE @TblVar AS TABLE([ServiceID] INT
,[StartDate] DATETIME
,[StartLocation] VARCHAR(255)
,[StartLat] FLOAT
,[StartLong] FLOAT
,[EndDate] DATETIME
,[EndLocation] VARCHAR(255)
,[EndLat] FLOAT
,[EndLong] FLOAT);
INSERT INTO @TblVar
VALUES (48322, '2016-11-28 05:38:37.000','Weaver Road,Leicester',52.5753273,-1.306842,'2016-11-28 05:40:02.000','Earl Street,Leicester',52.5781,-1.3048711)
,(48322, '2016-11-28 05:44:05.000','Earl Street,Leicester',52.5780996,-1.3048768,'2016-11-28 05:53:52.000','Arbor Road,Leicester',52.5533448,-1.2349645)
,(48322, '2016-11-28 09:14:25.000','Arbor Road,Leicester',52.5533833,-1.2349445,'2016-11-28 09:15:54.000','Coventry Road,Leicester',52.5522865,-1.2370495)
,(48322, '2016-11-28 09:16:05.000','Coventry Road,Leicester',52.552292,-1.2370598,'2016-11-28 09:20:41.000','Arbor Road,Leicester',52.553338,-1.2352033)
,(48322, '2016-11-28 13:34:36.000','Arbor Road,Leicester',52.553388,-1.2352651,'2016-11-28 13:53:29.000','Narborough Road South,Leicester',52.597422,-1.1832976)
,(48322, '2016-11-28 13:55:36.000','Narborough Road South,Leicester',52.597352,-1.183299,'2016-11-28 13:58:51.000','Hazel Drive,Leicester',52.6020946,-1.1760238)
,(48322, '2016-11-28 14:11:53.000','Hazel Drive,Leicester',52.6020853,-1.1760053,'2016-11-28 14:24:40.000','Arbor Road,Leicester',52.5533118,-1.2352118)
,(48322, '2016-11-28 14:29:48.000','Arbor Road,Leicester',52.5532741,-1.2352471,'2016-11-28 14:30:39.000','Coventry Road,Leicester',52.552955,-1.2363475)
,(48322, '2016-11-28 14:32:24.000','Coventry Road,Leicester',52.552944,-1.2363491,'2016-11-28 14:34:06.000','Coventry Road,Leicester',52.5532598,-1.2350731)
,(48322, '2016-11-28 14:50:12.000','Coventry Road,Leicester',52.5532646,-1.2351661,'2016-11-28 14:50:13.000','Coventry Road,Leicester',52.5532646,-1.2351661)
,(48322, '2016-11-28 16:02:29.000','Coventry Road,Leicester',52.553156,-1.2348643,'2016-11-28 16:13:09.000','Earl Street,Leicester',52.5780946,-1.30486)
,(48322, '2016-11-28 16:22:07.000','Earl Street,Leicester',52.5780776,-1.304851,'2016-11-28 16:23:26.000','Weaver Road,Leicester',52.5753643,-1.306814)
nào trông như thế này:
+-----------+---------------------+---------------------------------+------------+------------+---------------------+---------------------------------+------------+------------+
| ServiceID | StartDate | StartLocation | StartLat | StartLong | EndDate | EndLocation | EndLat | EndLong |
+-----------+---------------------+---------------------------------+------------+------------+---------------------+---------------------------------+------------+------------+
| 48322 | 28/11/2016 05:38:37 | Weaver Road,Leicester | 52.5753273 | -1.306842 | 28/11/2016 05:40:02 | Earl Street,Leicester | 52.5781 | -1.3048711 |
| 48322 | 28/11/2016 05:44:05 | Earl Street,Leicester | 52.5780996 | -1.3048768 | 28/11/2016 05:53:52 | Arbor Road,Leicester | 52.5533448 | -1.2349645 |
| 48322 | 28/11/2016 09:14:25 | Arbor Road,Leicester | 52.5533833 | -1.2349445 | 28/11/2016 09:15:54 | Coventry Road,Leicester | 52.5522865 | -1.2370495 |
| 48322 | 28/11/2016 09:16:05 | Coventry Road,Leicester | 52.552292 | -1.2370598 | 28/11/2016 09:20:41 | Arbor Road,Leicester | 52.553338 | -1.2352033 |
| 48322 | 28/11/2016 13:34:36 | Arbor Road,Leicester | 52.553388 | -1.2352651 | 28/11/2016 13:53:29 | Narborough Road South,Leicester | 52.597422 | -1.1832976 |
| 48322 | 28/11/2016 13:55:36 | Narborough Road South,Leicester | 52.597352 | -1.183299 | 28/11/2016 13:58:51 | Hazel Drive,Leicester | 52.6020946 | -1.1760238 |
| 48322 | 28/11/2016 14:11:53 | Hazel Drive,Leicester | 52.6020853 | -1.1760053 | 28/11/2016 14:24:40 | Arbor Road,Leicester | 52.5533118 | -1.2352118 |
| 48322 | 28/11/2016 14:29:48 | Arbor Road,Leicester | 52.5532741 | -1.2352471 | 28/11/2016 14:30:39 | Coventry Road,Leicester | 52.552955 | -1.2363475 |
| 48322 | 28/11/2016 14:32:24 | Coventry Road,Leicester | 52.552944 | -1.2363491 | 28/11/2016 14:34:06 | Coventry Road,Leicester | 52.5532598 | -1.2350731 |
| 48322 | 28/11/2016 14:50:12 | Coventry Road,Leicester | 52.5532646 | -1.2351661 | 28/11/2016 14:50:13 | Coventry Road,Leicester | 52.5532646 | -1.2351661 |
| 48322 | 28/11/2016 16:02:29 | Coventry Road,Leicester | 52.553156 | -1.2348643 | 28/11/2016 16:13:09 | Earl Street,Leicester | 52.5780946 | -1.30486 |
| 48322 | 28/11/2016 16:22:07 | Earl Street,Leicester | 52.5780776 | -1.304851 | 28/11/2016 16:23:26 | Weaver Road,Leicester | 52.5753643 | -1.306814 |
+-----------+---------------------+---------------------------------+------------+------------+---------------------+---------------------------------+------------+------------+
đầu ra của tôi mong muốn là như sau:
+-----------+-----------+---------------------+---------------------------------+------------+------------+
| ServiceID | PathOrder | Date | Location | Lattitude | Longitude |
+-----------+-----------+---------------------+---------------------------------+------------+------------+
| 48322 | 1 | 28/11/2016 05:38:37 | Weaver Road,Leicester | 52.5753273 | -1.306842 |
| 48322 | 2 | 28/11/2016 05:40:02 | Earl Street,Leicester | 52.5781 | -1.3048711 |
| 48322 | 3 | 28/11/2016 05:44:05 | Earl Street,Leicester | 52.5780996 | -1.3048768 |
| 48322 | 4 | 28/11/2016 05:53:52 | Arbor Road,Leicester | 52.5533448 | -1.2349645 |
| 48322 | 5 | 28/11/2016 09:14:25 | Arbor Road,Leicester | 52.5533833 | -1.2349445 |
| 48322 | 6 | 28/11/2016 09:15:54 | Coventry Road,Leicester | 52.5522865 | -1.2370495 |
| 48322 | 7 | 28/11/2016 09:16:05 | Coventry Road,Leicester | 52.552292 | -1.2370598 |
| 48322 | 8 | 28/11/2016 09:20:41 | Arbor Road,Leicester | 52.553338 | -1.2352033 |
| 48322 | 9 | 28/11/2016 13:34:36 | Arbor Road,Leicester | 52.553388 | -1.2352651 |
| 48322 | 10 | 28/11/2016 13:53:29 | Narborough Road South,Leicester | 52.597422 | -1.1832976 |
| 48322 | 11 | 28/11/2016 13:55:36 | Narborough Road South,Leicester | 52.597352 | -1.183299 |
| 48322 | 12 | 28/11/2016 13:58:51 | Hazel Drive,Leicester | 52.6020946 | -1.1760238 |
| 48322 | 13 | 28/11/2016 14:11:53 | Hazel Drive,Leicester | 52.6020853 | -1.1760053 |
| 48322 | 14 | 28/11/2016 14:24:40 | Arbor Road,Leicester | 52.5533118 | -1.2352118 |
| 48322 | 15 | 28/11/2016 14:29:48 | Arbor Road,Leicester | 52.5532741 | -1.2352471 |
| 48322 | 16 | 28/11/2016 14:30:39 | Coventry Road,Leicester | 52.552955 | -1.2363475 |
| 48322 | 17 | 28/11/2016 14:32:24 | Coventry Road,Leicester | 52.552944 | -1.2363491 |
| 48322 | 18 | 28/11/2016 14:34:06 | Coventry Road,Leicester | 52.5532598 | -1.2350731 |
| 48322 | 19 | 28/11/2016 14:50:12 | Coventry Road,Leicester | 52.5532646 | -1.2351661 |
| 48322 | 20 | 28/11/2016 14:50:13 | Coventry Road,Leicester | 52.5532646 | -1.2351661 |
| 48322 | 21 | 28/11/2016 16:02:29 | Coventry Road,Leicester | 52.553156 | -1.2348643 |
| 48322 | 22 | 28/11/2016 16:13:09 | Earl Street,Leicester | 52.5780946 | -1.30486 |
| 48322 | 23 | 28/11/2016 16:22:07 | Earl Street,Leicester | 52.5780776 | -1.304851 |
| 48322 | 24 | 28/11/2016 16:23:26 | Weaver Road,Leicester | 52.5753643 | -1.306814 |
+-----------+-----------+---------------------+---------------------------------+------------+------------+
Bất kỳ ý tưởng/code sẽ nhận được rất nhiều.
Cảm ơn,
Dan
gợi ý: Nếu bạn muốn tạo gấp đôi so với nhiều hàng, sử dụng một CROSS JOIN với một bảng có hai hàng. Sau đó, chỉ cần sử dụng câu lệnh trường hợp để chọn cột nào sẽ đi vào hàng nào. –
Suy nghĩ một CTE sẽ là một cách hiệu quả hơn để làm điều đó. Sẽ câu đố trên gợi ý của bạn và đăng phát hiện của tôi. Cảm ơn! –
Bạn có hai để chọn từ bây giờ :). Đây là một câu hỏi chất lượng cao - làm cho nỗ lực đăng một kịch bản thiết lập giúp việc đặt một giải pháp trở nên dễ dàng hơn nhiều! –