在每行显示单个价格

时间:2018-09-17 12:26:50

标签: sql sql-server sap sql-server-2017

我当前正在使用MS SQL Studio 2017和SAP B1。 我正在使用的表称为ITM1表。 该表内有以下字段...

ItemCode,PriceListNo和Price。

在价目表中,其顺序如下... 1 2 3、1 2 3、1 2 3。

每个商品都有3个相同的商品代码。并且价格字段包含7.00英镑,14.00英镑,15.00英镑(例如1-供应商价格,2-基准价格,3-零售价格),并且价格列表字段取决于选择的价格列表编号而有所不同。

我想创建一个显示以下内容的表格:“项目代码,供应商价格,基准价格,零售价格”(这些显然是WHERE PriceListNo ='1'

如何将其显示在一个表中。我今天早上一直在尝试案例陈述,但没有运气,我也尝试过子查询,似乎无法理解吗?

Example Table

我想将上表中的此信息传递给单个ItemCode列,但在单独的列上显示价格£14.50,£21,£21£21 感谢您的帮助

亲切问候 安迪

1 个答案:

答案 0 :(得分:1)

有很多不同的方法可以做到这一点。其中之一就是使用您提到的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