SQL 用于根据 SQL 服务器中的列值获取具有列的 table 的查询设计

SQL query design for getting a table with column depending on a column value in SQL Server

我想在 SQL 服务器中执行 SQL 查询以获得 table:

表 1:

  id  t value
  1   R  2412
  1   Q 98797
  2   R 132
  2   Q 7589

我需要得到table:

 id   R_value   Q_value
 1      2412     98797
 2      132      7589

我用了 case 和 when,但是我得到了

id   R_value   Q_value
 1      2412     null
 1      null     98797

如有任何帮助,我们将不胜感激。

使用条件聚合:

SQL Fiddle

SELECT
    id,
    MAX(CASE WHEN t = 'R' THEN value END) AS R_value,
    MAX(CASE WHEN t = 'Q' THEN value END) AS Q_value
FROM YourTable
GROUP BY id

您可以将 maxmingroup by 一起使用以删除 null 值并聚合具有相同 id 的行:

select id
     , min(case when t = 'R' then value end) as R_value
     , min(case when t = 'Q' then value end) as Q_value
from tbl
group by id

您可以像这样轻松使用 PIVOT table 运算符:

SELECT
  id,
  R AS R_value,
  Q AS Q_value
FROM table1 AS t1
PIVOT
(
  MAX(value)
  FOR t IN(R, Q)
) AS p;

这会给你:

| id | R_value | Q_value |
|----|---------|---------|
|  1 |    2412 |   98797 |
|  2 |     132 |    7589 |