我对SQL还是很陌生,刚刚开始学习派生表。 该事物将创建两个表,一个不包含null,另一个不包含null 但我似乎无法理解为什么联接无法正常工作。 我收到错误“关键字'OUTER'附近的语法不正确”。 和“关键字'ON'附近的语法不正确”。但是我还是不明白...
这是我的代码:
SELECT customer_id, order_id, order_status, shipped_date
FROM (
SELECT ROW_NUMBER() OVER (PARTITION BY customer_id ORDER BY order_status) AS rownum,
customer_id, order_id, order_status, shipped_date
FROM Sales.orders) AS T
WHERE shipped_date IS NOT NULL
OUTER JOIN
SELECT customer_id, order_id, order_status, shipped_date
FROM (
SELECT ROW_NUMBER() OVER (PARTITION BY customer_id ORDER BY order_status) AS rownum,
customer_id, order_id, order_status, shipped_date
FROM Sales.orders) AS T2
WHERE shipped_date IS NULL
ON T.customer_id = T2.customerid;
答案 0 :(得分:3)
尝试如下
select a.*,b.* from (SELECT customer_id, order_id, order_status, shipped_date
FROM (
SELECT ROW_NUMBER() OVER (PARTITION BY customer_id ORDER BY order_status) AS rownum,
customer_id, order_id, order_status, shipped_date
FROM Sales.orders) AS T
WHERE shipped_date IS NOT NULL
) a
left JOIN
(SELECT customer_id, order_id, order_status, shipped_date
FROM (
SELECT ROW_NUMBER() OVER (PARTITION BY customer_id ORDER BY order_status) AS rownum,
customer_id, order_id, order_status, shipped_date
FROM Sales.orders) AS T2
WHERE shipped_date IS NULL
) b
ON a.customer_id = b.customerid;
顺便说一句,您可以使用一个查询来完成
SELECT customer_id, order_id, order_status, shipped_date
FROM (
SELECT ROW_NUMBER() OVER (PARTITION BY customer_id ORDER BY order_status) AS rownum,
customer_id, order_id, order_status, shipped_date
FROM Sales.orders) AS T2
WHERE shipped_date IS NULL or shipped_date is not null