CẤP Xin giúp chuyển đổi Oracle truy vấn đến SQL Server tương đương:SQL Server tương đương với Oracle CONNECT BY và pseudocolumn
SELECT (LEVEL+1-1) AS lvl
FROM dual
CONNECT BY LEVEL <= 10
/
Đầu ra là các số từ 1 đến 10:
LVL
----
1
2
3
...
10
Tôi biết có các phương thức phân cấp trong SQL Server và các trình dựng sẵn như GetLevel
và hơn thế nữa. Điều này có thể được sử dụng để có được kết quả tương tự không?
Để tạo bảng kép nếu cần thiết (không chắc chắn) - sao chép từ đây: http://blog.sqlauthority.com/2010/07/20/sql-server-select-from-dual-dual-equivalent/
CREATE TABLE DUAL
(
DUMMY VARCHAR(1)
)
GO
INSERT INTO DUAL (DUMMY)
VALUES ('X')
GO
Cụ thể tìm các ví dụ mà sẽ cho phép sử dụng smth. như LEVEL trong truy vấn. Ví dụ: chỉ có một ngày bắt đầu trong bảng - 4/22/2013. Nhưng với LEVEL tôi có thể tăng nó như sau:
SELECT start_date, start_date+LEVEL-1 AS start_date_btwn
FROM my_tab
WHERE id = 1
CONNECT BY LEVEL<=10
/
START_DATE START_DATE_BTWN
------------------------------
4/22/2013 4/22/2013
4/22/2013 4/23/2013
4/22/2013 4/24/2013
4/22/2013 4/25/2013
......
4/22/2013 4/30/2013
Cảm ơn bạn rất nhiều trước.
Có một số tối đa của số bạn cần? – sgeddes
@sgeddes - không, trong Oracle có thể có bất kỳ số nào thay vì 10 như trong ví dụ của tôi. Tôi giới hạn ví dụ của tôi đến 10 để đơn giản. Cảm ơn bạn. – Art
@Martin - Cảm ơn bạn. Điều này đã giúp. – Art