逐行显示一个记录字段值

Display one record field values into row by row

提问人:Srinivas 提问时间:11/17/2023 最后编辑:Error_2646Srinivas 更新时间:11/17/2023 访问量:34

问:

如何在 SQL 中逐行显示一条记录值。请帮忙

前任:

EMPID EMPNAME EMPADDRESS  EMPCOUNTRY
1     TEST    HYD         INDIA

需要显示如下

ID   VALUE
10   TEST
10   HYD
10   INDIA

请注意,10 是另一个唯一的字段值,即单个字段

SQL格式

评论

1赞 Error_2646 11/17/2023
您使用的是什么 DBMS?这称为 UNPIVOT。此处的 SQL Server 示例 stackoverflow.com/questions/18026236/sql-server-columns-to-rows 。我不知道这意味着什么“10 是另一个唯一的字段值,即单个字段”。我假设第一个数据样本中的“1”id 应该是 10?如果只有 3 列,则可以使用一系列 UNIONS,则多个列会查看 DBMS 支持的 UNPIVOT 语法。
0赞 jarlh 11/17/2023
表包含。(记录和字段在 SQL 中是其他内容。
0赞 jarlh 11/17/2023
在哪里可以找到 .一个最小的可重现示例应该是一致的10

答:

2赞 Heinz Siahaan 11/17/2023 #1

我假设你使用 .示例代码如下:SQL SERVER

CREATE TABLE Employee (
    EMPID INT,
    EMPNAME VARCHAR(50),
    EMPADDRESS VARCHAR(50),
    EMPCOUNTRY VARCHAR(50)
);


INSERT INTO Employee (EMPID, EMPNAME, EMPADDRESS, EMPCOUNTRY)
VALUES (1, 'TEST', 'HYD', 'INDIA');

--10 comes from another table
SELECT 10 AS ID, EMPNAME AS VALUE FROM Employee WHERE EMPID = 1
UNION ALL
SELECT 10 AS ID, EMPADDRESS AS VALUE FROM Employee WHERE EMPID = 1
UNION ALL
SELECT 10 AS ID, EMPCOUNTRY AS VALUE FROM Employee WHERE EMPID = 1;

或者你可以使用UNPIVOT

SELECT 
    10 AS ID, 
    COLUMN_VALUE AS VALUE
FROM (
    SELECT EMPNAME, EMPADDRESS, EMPCOUNTRY
    FROM Employee
    WHERE EMPID = 1
) t
UNPIVOT (
    COLUMN_VALUE FOR COLUMN_NAME IN (EMPNAME, EMPADDRESS, EMPCOUNTRY)
) unpvt;

输出如下:

enter image description here

您可以检查此小提琴的实现