Показать отдельные цены в каждой строке - PullRequest
0 голосов
/ 17 сентября 2018

В настоящее время я использую MS SQL Studio 2017 и SAP B1.Таблица, с которой я работаю, называется таблицей ITM1.Внутри этой таблицы находятся следующие поля ...

ItemCode, PriceListNo и Price.

Внутри прайс-листа он упорядочен следующим образом ... 1 2 3, 1 2 3, 1 23.

Каждый предмет имеет 3 одинаковых кода предмета.И поле цены содержит £ 7,00, £ 14,00, £ 15,00 (например, 1 - Цена поставщика, 2 - Базовая цена, 3 - Розничная цена) И поле прейскуранта зависит от того, какой номер прейскуранта выбран.

Я хочу создать таблицу, которая будет отображать ... "Код товара, цена поставщика, базовая цена, розничная цена" (это, очевидно, ГДЕ PriceListNo = '1'

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

Example Table

Я хочу перенести эту информацию в приведенной выше таблице в один столбец ItemCode, но в отдельном столбце отобразить цену: £ 14.50, £ 21, £ 21 £ 21. Спасибо за любую помощь

С наилучшими пожеланиямиAndy

1 Ответ

0 голосов
/ 17 сентября 2018

Существует множество способов сделать это.Один из которых использует CASE, как вы намекали;

CREATE TABLE dbo.ITM1
(
  ItemCode VARCHAR(64),
  PriceListNo INTEGER,
  Price DECIMAL(18,9)
);

INSERT INTO ITM1 VALUES  ('AHV16',1, 7.00),
                         ('AHV16',2, 14.00),
                         ('AHV16',3, 15.00),
                         ('AHV16',4, 18.00);

SELECT t.ItemCode,
SUM(CASE WHEN t.PriceListNo = 1 THEN t.Price END) [Supplier Price],
SUM(CASE WHEN t.PriceListNo = 2 THEN t.Price END) [Base Price],
SUM(CASE WHEN t.PriceListNo = 3 THEN t.Price END) [Retail Price],
SUM(CASE WHEN t.PriceListNo = 4 THEN t.Price END) [Internet Price]
FROM dbo.ITM1 t
GROUP BY t.ItemCode
...