SQL добавляет отличные значения из двух столбцов и двух таблиц - PullRequest
0 голосов
/ 25 июня 2018

Я пытаюсь создать код SQL, который берет отличные значения из двух столбцов и «добавляет» их.Я имею в виду, что следующая таблица:

Account   Article
-----------------
   1        1
   1        2
   2        3

должна дать следующий результат:

Account   Article
-----------------
   1        1
   1        2
   1        3
   2        1
   2        2
   2        3

Я делаю это из двух таблиц, используя объединение, поэтому идеячтобы получить все комбинации всех уникальных номеров счетов в обеих таблицах со всеми уникальными номерами статей в обеих таблицах.И я хочу пункт, который ограничивает обе таблицы датой заказа позже, чем год назад.

Пока у меня есть:

Select Distinct 
    "Tra.".cus_outnum As "account number", 
    "Tra.".artnum As "article number"
From 
    (table1) "Tra." 
Where 
    "Tra.".invdat >= DATEADD(year, -1, GETDATE())

Union

Select Distinct 
    "Sal.".outnum As "account number", 
    "Sal.".artnum As "article number"
From 
    (table2) "Sal."  
Where 
    "Sal.".deldat>= DATEADD(year, -1, GETDATE())

Проблема в том, что он дает мне только комбинацию, где существуют и аккаунт, и статья.Я безуспешно устал делать это с утверждением with:

WITH temp1 AS 
(
     Select distinct cus_outnum 
     From table1
), temp2 AS
(
     Select distinct artnum 
     From table1
)
SELECT cus_outnum,artnum
FROM temp1, temp2, table1

Помощь муравья была бы очень необходима!

Ответы [ 2 ]

0 голосов
/ 25 июня 2018

Вам нужно cross присоединиться:

select distinct t.Account, t1.Article
from table1 t cross join
     (select distinct article from table) t1;
0 голосов
/ 25 июня 2018

Это дает ожидаемый результат:

with cte1 as (Select distinct account from test)
,cte2 as (Select distinct article from test)
Select * from cte1 cross join cte2

Схема:

Create table test(account int, article int);
Insert into test values(1,1);
Insert into test values(1,2);
Insert into test values(2,3);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...