我是 SQL Server 主題的新手,我不確定如何解決我的問題。我有 2 個表,我喜歡根據每個表的兩個值加入它們。
SELECT
dbo.ARTIKEL.ARTIKEL,
dbo.ARTIKEL.SUCHWORT,
dbo.ARTIKEL.ARTTEXT,
dbo.FDDATEN.INHALT AS Herstellername,
dbo.FDDATEN.INHALT AS Typennummer,
dbo.FDDATEN.INHALT AS Bestellnummer,
dbo.FDDATEN.INHALT AS HerstArt,
dbo.FDDATEN.SCHLUESSEL,
dbo.ARTIKEL.ROWART
FROM
dbo.ARTIKEL
INNER JOIN
FDDATEN ON ARTIKEL.ROWART = FDDATEN.SCHLUESSEL
WHERE
ARTIKEL LIKE 'E%'
這有效并回傳如下內容:
| 阿蒂克爾 | 茯苓 | 藝術文本 | 赫斯特勒名字 | 型別編號 | 最好的數字 | 赫斯特藝術 | 施盧塞爾 | 羅華特 |
|---|---|---|---|---|---|---|---|---|
| E220324W001 | C300-02400041A10100A | Commander C300,交流變頻器,框架尺寸 2,3PH,400V,4.1A,1.5kW % | NCT.C300-02400041A10100AB100 | NCT.C300-02400041A10100AB100 | NCT.C300-02400041A10100AB100 | NCT.C300-02400041A10100AB100 | 236324 | 236324 |
| E220324W001 | C300-02400041A10100A | Commander C300,交流變頻器,框架尺寸 2,3PH,400V,4.1A,1.5kW % | C300-02400041A10100AB100 | C300-02400041A10100AB100 | C300-02400041A10100AB100 | C300-02400041A10100AB100 | 236324 | 236324 |
| E220324W001 | C300-02400041A10100A | Commander C300,交流變頻器,框架尺寸 2,3PH,400V,4.1A,1.5kW % | 1 | 1 | 1 | 1 | 236324 | 236324 |
| E220324W001 | C300-02400041A10100A | Commander C300,交流變頻器,框架尺寸 2,3PH,400V,4.1A,1.5kW % | 日本電產 | 日本電產 | 日本電產 | 日本電產 | 236324 | 236324 |
但我想要這樣:
| 阿蒂克爾 | 茯苓 | 藝術文本 | 赫斯特勒名字 | 型別編號 | 最好的數字 | 赫斯特藝術 | 施盧塞爾 | 羅華特 |
|---|---|---|---|---|---|---|---|---|
| E220324W001 | C300-02400041A10100A | Commander C300,交流變頻器,框架尺寸 2,3PH,400V,4.1A,1.5kW % | NCT.C300-02400041A10100AB100 | C300-02400041A10100AB100 | 1 | 日本電產 | 236324 | 236324 |
關于如何實作這一目標的任何想法?
謝謝您的幫助。
uj5u.com熱心網友回復:
我假設表 FDDATEN 有一個附加欄位 TYP,您可以在其中存盤事實,例如一行是 Herstellername、Typennummer 或其他。顯然,我不知道資料庫中此列的正確名稱,也不知道指示哪個 INHALT 屬于哪個 TYP 的實際值,但是您應該能夠輕松地調整這一列。
您正在尋找的查詢是這樣的
SELECT
dbo.ARTIKEL.ARTIKEL,
dbo.ARTIKEL.SUCHWORT,
dbo.ARTIKEL.ARTTEXT,
(SELECT INHALT from dbo.FDDATEN WHERE SCHLUESSEL = ROWART AND TYP = 'Herstellername') as Herstellername,
(SELECT INHALT from dbo.FDDATEN WHERE SCHLUESSEL = ROWART AND TYP = 'Typennummer') as Typennummer,
(SELECT INHALT from dbo.FDDATEN WHERE SCHLUESSEL = ROWART AND TYP = 'Bestellnummer') as Bestellnummer,
(SELECT INHALT from dbo.FDDATEN WHERE SCHLUESSEL = ROWART AND TYP = 'HerstArt') as HerstArt,
dbo.ARTIKEL.ROWART
FROM dbo.ARTIKEL
WHERE ARTIKEL LIKE 'E%'
如果您在 FDDATEN 中沒有一列來識別每一列的正確行,您可能無法完成此操作。或者,如果一個 SCHLUESSEL 和一個 TYP 有多個條目,你會得到 SQL 錯誤。
uj5u.com熱心網友回復:
所以對于后來的我和其他人來說,我的解決方案是:
SELECT
dbo.ARTIKEL.ARTIKEL,
dbo.ARTIKEL.SUCHWORT,
dbo.ARTIKEL.ARTTEXT,
(SELECT INHALT from dbo.FDDATEN WHERE ROWART = SCHLUESSEL and ROWFDPOS = 1) as Herstellername,
(SELECT INHALT from dbo.FDDATEN WHERE ROWART = SCHLUESSEL and ROWFDPOS = 11) as Typennummer,
(SELECT INHALT from dbo.FDDATEN WHERE ROWART = SCHLUESSEL and ROWFDPOS = 21) as Bestellnummer,
(SELECT INHALT from dbo.FDDATEN WHERE ROWART = SCHLUESSEL and ROWFDPOS = 31) as HerstArt
FROM dbo.ARTIKEL
WHERE ARTIKEL LIKE 'E%'
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/455290.html
上一篇:以升序排列,不包括一項
