Кажется, у меня есть относительно простая задача, но мои знания SQL ограничены, и мой гугл-фу терпит неудачу. Хотя я мог бы обойти это, написав сценарий PowerShell или обманув ...

1
VolrathTheFallen 3 Мар 2021 в 16:55

2 ответа

Лучший ответ
 SELECT *
 FROM CUSTOMERS            
 WHERE CUSTOMERS.NAME IN ('B','C','D','E','F') 
       -- may not be needed if you want all rows from customers table.

Выберем всех клиентов, с которыми хотите работать

Теперь мы просто присоединяемся к другой таблице, чтобы получить данные

 SELECT *
 FROM CUSTOMERS
 JOIN PRICES ON  PRICES.Customer_ID = 1
 WHERE CUSTOMERS.Customer_Group = 'ABC'

Выберите нужные столбцы

 SELECT PRICES.ProductName, 
        CUSTOMERS.CustomerID,
        PRICES.price1, PRICES.price2, PRICES.price3, PRICES.price4
 FROM CUSTOMERS
 JOIN PRICES ON  PRICES.Customer_ID = 1
 WHERE CUSTOMERS.Customer_Group = 'ABC'

Если вы хотите вставить это в таблицу, добавьте оператор вставки в начале

 INSERT INTO PRICES 
      (Productname, Customer_ID, price1, price2, price3, price4, price5)
   SELECT PRICES.ProductName, 
          CUSTOMERS.CustomerID,
          PRICES.price1, PRICES.price2, PRICES.price3, PRICES.price4
   FROM CUSTOMERS
   JOIN PRICES ON  PRICES.Customer_ID = 1
   WHERE CUSTOMERS.Customer_Group = 'ABC'
1
Hogan 3 Мар 2021 в 16:03

В общем, это?

SELECT P.ProductName,
       P.Customer_ID,
       P.price1,
       P.price2, --This is a denormalised design, and you should fix this
       P.price3, --This is a denormalised design, and you should fix this
       P.price4 --This is a denormalised design, and you should fix this
FROM dbo.Prices P
--WHERE P.Customer = 1 --?
UNION ALL
SELECT P.ProductName,
       C.ID AS CustomerID,
       P.price1,
       P.price2, --This is a denormalised design, and you should fix this
       P.price3, --This is a denormalised design, and you should fix this
       P.price4 --This is a denormalised design, and you should fix this
FROM dbo.Prices P
     CROSS JOIN dbo.Customers C;
--WHERE P.Customer = 1 --?
0
Larnu 3 Мар 2021 в 15:42