我正在嘗試從多個行開始創建一行,并根據不同的列值將它們組合起來;這是我根據以下查詢得出的結果:
select distinct ID, case info when 'name' then value end as 'NAME', case info when 'id' then value end as 'serial'
FROM TABLENAME t
WHERE info = 'name' or info = 'id'

但是,預期的結果應該類似于

我嘗試使用group by子句,但這似乎不起作用。RDBMS 是 Microsoft SQL Server。謝謝
uj5u.com熱心網友回復:
SELECT X.ID,MAX(X.NAME)NAME,MAX(X.SERIAL)AS SERIAL FROM
(
SELECT 100 AS ID, NULL AS NAME, '24B6-97F3'AS SERIAL UNION ALL
SELECT 100,'A',NULL UNION ALL
SELECT 200,NULL,'8113-B600'UNION ALL
SELECT 200,'B',NULL
)X
GROUP BY X.ID
對我來說 GROUP BY 作品
uj5u.com熱心網友回復:
我是這樣的自我加入的粉絲
SELECT tName.ID, tName.Value AS Name, tSerial.Value AS Serial
FROM TableName AS tName
INNER JOIN TableName AS tSerial ON tSerial.ID = tName.ID AND tSerial.Info = 'Serial'
WHERE tName.Info = 'Name'
這最初只選擇 Name 行,然后在相同的 ID 上自連接,現在過濾到 Serial 行。如果不是所有內容都有名稱和序列號,并且您想知道哪些名稱沒有序列號,您可能需要將內部連接更改為左連接
uj5u.com熱心網友回復:
只需進行簡單的聚合即可獲得所需的輸出
select ID, max(name) as name ,max(serial) as serial
from TableName
group by ID;
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/517062.html
標籤:sqlsql服务器数据库
上一篇:比較python字典中的鍵和值
