我有针对ID的出勤记录,该记录显示他/她当天是否在场,我想通过sql查询在该ID的多行中显示数据。 因此,请尽快帮助我解决此问题。

执行查询后,从数据库获取以下结果:

abc   1/2/2013      Present

abc   2/2/2013      Present

abc   3/2/2013      Present

abc   4/2/2013      Present

abc   5/2/2013      Present

abc   6/2/2013      Present

Expected Result:

Name   Date1     Date2     Date3      Date4       Date5

abc    Present   Present   Present    Present     Present

===============>>#1 票数:1 已采纳

如果一定不要使用PIVOT ,则可以使用行号和分组( DEMO )获得相同的效果:

select
  name
  ,max(case when rn=1 then description end) as date1
  ,max(case when rn=2 then description end) as date2
  ,max(case when rn=3 then description end) as date3
  ,max(case when rn=4 then description end) as date4
  ,max(case when rn=5 then description end) as date5
from (
  select name, date, description,
    row_number() over (partition by name order by date) rn from Table1
) T
group by name

请注意,这只会处理与您硬编码到查询中一样多的日期。 如果它必须是动态的(即,您不知道需要提前多少个日期列),则可能需要根据每个组的最大日期数来动态生成上述SQL代码。

  ask by Malik translate from so

未解决问题?本站智能推荐:

1回复

在没有PIVOT运算符的情况下执行数据透视

我在设计程序时遇到困难,该程序将在稍后讨论的表上使用给定的汇总执行数据透视。 过程应该使用传递到过程中的聚合动态地从Sales.Month和数据透视表中获取所有条目,例如,如果我们要在Sales上传递SUM(使用VARCHAR传递,然后在动态创建的查询上传递EXEC): 销售:
1回复

在不使用聚合函数显示所有值的情况下进行数据透视

我有一个SQL表,下面给出的是它的图像。 我需要使用平板电脑名称作为列名称,并在其时间下方显示在行中。 有三种不同的输入板,每个输入板都有自己的主键。 示例列名称增强,并在此列中显示键157的所有时间。我想要以下内容
2回复

SQL 2008将具有相同ID的多行数据合并为一行

我在一个表中有数据,其中包含同一CardNum的多行数据。 我想创建一个表,其中同一CardNum的所有数据显示在同一行上。 我的数据目前是这样的: 这就是我想要的数据: 先感谢您。
2回复

在不使用数据透视的情况下将行转换为列

我如何转换此行: 到这一行: 不使用数据透视??
1回复

使用ID从所有表中获取一行数据

我需要从所有数据库表中获取样本数据,有数百个表,但并非所有表都可能相关。 有没有一种方法可以从顶级表中提供一个ID,以选择一行,还可以在子表中选择数据的相应行(如果存在数据)。 即给定一个ID,在所有表中选择该ID的所有数据,如果存在则仅返回数据。 例如: 等等
5回复

SQL插入一行或多行数据?

我正在使用控制台应用程序将数据插入到MS SQL Server 2005数据库。 我有一个要插入的对象列表。 这里我使用Employee类作为示例: 我能做的是在这个时间插入一个对象: 或者我可以像这样构建一个balk插入查询: 我想后一种情况是一次插入数据行。 但
2回复

在我的情况下,如何在SQL Server中创建数据透视表?

我想按同一列显示记录。 我也不知道如何描述这个问题。 我有一个名为SoldQtyTable的表 我想显示如下 我以这种方式尝试过。 但这不起作用
2回复

SQL Pivot在这种情况下?

我正在努力做到这一点 看起来像这样 这样,日期字段行数据最终成为每个不同值的列标题。 我想我可以利用PIVOT语句,但是我看到的所有示例对此似乎都很简单。 提前致谢。
1回复

仅在至少存在一行的情况下选择行

我有以下查询: 如果表中已经存在的数据没有出现在表变量中,我想引发一个错误。 这是为了确保我的源代码与特定环境中的匹配。 问题在于两个选择查询是重复的代码。 这引入了人为错误的可能性-两个查询应该相同但可以不同。 一种替代方法是: 但是,这会“污染”查询输出,因为如果数据
2回复

sqlserver-通过使用数据透视表将多行合并为一行

假设我们有下表: 理想的结果将是: 为了将多行合并为一行,我可以执行以下操作。 但是,我的表比上一个表更复杂。 假设我的表如下: 所以我的问题是如何产生以下结果? 更新: 类型的数量是固定的。 这意味着只有类型A,B和C。某些ID可能只有一种