我有一個表SQL樞軸
CREATE TABLE [dbo].[newTable](
[EBELN] [nvarchar](20) NOT NULL,
[EBELP] [nvarchar](10) NOT NULL,
[VGABE] [nvarchar](2) NOT NULL,
[MENGE] [numeric](15, 3) NULL,
[DMBTR] [numeric](15, 2) NULL
)
它有這些記錄
insert into dbo.newTable(EBELN, EBELP, VGABE, MENGE , DMBTR) values('3000000004', '0001', '1', 1 , 27.95)
Go
insert into dbo.newTable(EBELN, EBELP, VGABE, MENGE , DMBTR) values('3000000004', '0001', '2', 1 , 27.95)
Go
insert into dbo.newTable(EBELN, EBELP, VGABE, MENGE , DMBTR) values('3000000004', '0002', '1', 1 , 10.95)
Go
insert into dbo.newTable(EBELN, EBELP, VGABE, MENGE , DMBTR) values('3000000004', '0002', '2', 1 , 10.95)
Go
insert into dbo.newTable(EBELN, EBELP, VGABE, MENGE , DMBTR) values('3000000010', '0001', '1', 1 , 22.95)
Go
insert into dbo.newTable(EBELN, EBELP, VGABE, MENGE , DMBTR) values('3000000010', '0001', '2', 1 , 22.95)
Go
insert into dbo.newTable(EBELN, EBELP, VGABE, MENGE , DMBTR) values('3000000010', '0002', '1', 1 , 32.95)
Go
insert into dbo.newTable(EBELN, EBELP, VGABE, MENGE , DMBTR) values('3000000010', '0002', '2', 1 , 32.95)
Go
insert into dbo.newTable(EBELN, EBELP, VGABE, MENGE , DMBTR) values('4151516119', '0001', '1', 1 , 400.00)
Go
insert into dbo.newTable(EBELN, EBELP, VGABE, MENGE , DMBTR) values('4151516119', '0001', '1', 1 , 400.00)
Go
insert into dbo.newTable(EBELN, EBELP, VGABE, MENGE , DMBTR) values('4151516119', '0001', '2', 1 , 400.00)
Go
insert into dbo.newTable(EBELN, EBELP, VGABE, MENGE , DMBTR) values('4151516119', '0002', '1', 1 , 200.00)
Go
insert into dbo.newTable(EBELN, EBELP, VGABE, MENGE , DMBTR) values('4151516119', '0002', '2', 1 , 200.00)
Go
多數民衆贊成在SELECT *
EBELN EBELP VGABE MENGE DMBTR
-------------------- ---------- ----- -------------- ---------------------------------------
3000000004 0001 1 1.000 27.95
3000000004 0001 2 1.000 27.95
3000000004 0002 1 1.000 10.95
3000000004 0002 2 1.000 10.95
3000000010 0001 1 1.000 22.95
3000000010 0001 2 1.000 22.95
3000000010 0002 1 1.000 32.95
3000000010 0002 2 1.000 32.95
4151516119 0001 1 1.000 400.00
4151516119 0001 1 1.000 400.00
4151516119 0001 2 1.000 400.00
4151516119 0002 1 1.000 200.00
4151516119 0002 2 1.000 200.00
3000000004 0001 2 1.000 27.95
3000000004 0002 1 1.000 10.95
3000000004 0002 2 1.000 10.95
3000000010 0001 1 1.000 22.95
3000000010 0001 2 1.000 22.95
3000000010 0002 1 1.000 32.95
3000000010 0002 2 1.000 32.95
4151516119 0001 1 1.000 400.00
4151516119 0001 1 1.000 400.00
4151516119 0001 2 1.000 400.00
4151516119 0002 1 1.000 200.00
4151516119 0002 2 1.000 200.00
4151516177 0002 6 1.000 111.00
4151516177 0002 8 1.000 111.00
我需要什麼而想要的是產生這個結果的動態支點
+------------+-------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+
| EBELN | EBELP | c_DMBTR_1 | c_MENGE_1 | c_DMBTR_2 | c_MENGE_2 | c_DMBTR_6 | c_MENGE_6 | c_DMBTR_8 | c_MENGE_8 |
+------------+-------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+
| 3000000004 | 0001 | 27.95 | 1 | 27.95 | 1 | NULL | NULL | NULL | NULL |
| 3000000004 | 0002 | 10.95 | 1 | 10.95 | 1 | NULL | NULL | NULL | NULL |
| [...] | | | | | | | | | |
| 4151516119 | 0001 | 800.00 | 1 | 400.00 | 1 | NULL | NULL | NULL | NULL |
| 4151516177 | 0002 | NULL | NULL | NULL | NULL | 111.00 | 1 | 111.00 | 1 |
+------------+-------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+
我嘗試了幾個解決方案,但沒有得到我想要的結果。
我需要的是VGABE
的值,它們是(1,2,6,7,8,9,P,R)
,要連接到字符串名稱c_DMBTR
和c_MENGE
。但是有可能例如P或者7沒有被使用,所以我不希望有這個列。我認爲使其動態是唯一可行的方法。
從VGABE
的價值應該被添加到列名狀'c_MENGE_'+VGABE
並且它必須是爲了,這意味着它開始從VGABE
所有欄的最低值,然後下一個值,直到從vgabe每次使用的值。
如果有一個位置(EBELP
)從VGABE
不止一個值樣兩次1 POS 0001
,你可以通過EBELN 4151516119
我來總結(DMBTR)這個職位和VGABE價值看。我也和MENGE一樣。
是否可以在一個查詢或存儲過程中執行操作。我不知道如何得到這個結果,我現在被卡住了。還是有另一種我不知道的方式?
即時通訊使用SQL Server 2014和MS SQL管理工作室2014年 – JollyPopper 2014-10-01 12:09:40