SQL查询设计,用于根据SQL Server中的列值获取具有列的表

SQL查询设计,用于根据SQL Server中的列值获取具有列的表,sql,sql-server,sql-server-2008,windows-7,pivot,Sql,Sql Server,Sql Server 2008,Windows 7,Pivot,我想在SQL Server中执行SQL查询以获取表: 表1: id t value 1 R 2412 1 Q 98797 2 R 132 2 Q 7589 我需要一张桌子: id R_value Q_value 1 2412 98797 2 132 7589 我用过这个箱子,但我 id R_value Q_value 1 2412 null 1 null

我想在SQL Server中执行SQL查询以获取表:

表1:

  id  t value
  1   R  2412
  1   Q 98797
  2   R 132
  2   Q 7589
我需要一张桌子:

 id   R_value   Q_value
 1      2412     98797
 2      132      7589
我用过这个箱子,但我

id   R_value   Q_value
 1      2412     null
 1      null     98797

任何帮助都将不胜感激。

使用条件聚合:


使用条件聚合:


使用条件聚合:


使用条件聚合:


您可以将
max
min
groupby
一起使用,以去除
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

您可以将
max
min
groupby
一起使用,以去除
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

您可以将
max
min
groupby
一起使用,以去除
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

您可以将
max
min
groupby
一起使用,以去除
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
您可以像这样轻松地使用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 |
您可以像这样轻松地使用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 |
您可以像这样轻松地使用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 |
您可以像这样轻松地使用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 |

我们需要R作为R_值吗?否则,它将不起作用。谢谢不,你可以选择*而不是我们需要R作为R_值吗?否则,它将不起作用。谢谢不,你可以选择*而不是我们需要R作为R_值吗?否则,它将不起作用。谢谢不,你可以选择*而不是我们需要R作为R_值吗?否则,它将不起作用。谢谢不,你可以改为选择