我有一个这样的表:
TABLE: FACTS
ID KEY VALUE
1 name Jeremy
1 height 5'11
1 awesomeness 10
2 name Mark
2 awesomeness 4
3 height 4'6
因此,(ID,KEY)元组可以视为主键。
我试图返回这样的行:
ID NAME HEIGHT AWESOMENESS
1 Jeremy 5'11 10
2 Mark (null) 4
3 (null) 4'6 (null)
因此,除了通过对每列进行子选择之外,如何才能抓住键值(如果有的话)并将它们收集到我的单行中?到目前为止,我尝试过的是:
SELECT
id,
CASE WHEN facts.key = 'name' THEN value END name,
CASE WHEN facts.key = 'height' THEN value END height,
CASE when facts.key = 'awesomeness' THEN value END awesomeness
FROM
facts
WHERE
facts.id in (1,2,3)
但是出于明显的原因,此操作会为每个匹配的键返回一行,而不是每个id返回一行。
我该如何以自己想要的方式进行操作?
谢谢!
您可以在任何版本的Oracle中旋转这样的数据。
SELECT id,
MAX( CASE WHEN key = 'name' THEN value ELSE null END ) name,
MAX( CASE WHEN key = 'height' THEN value ELSE null END ) height,
MAX( CASE WHEN key = 'awesomeness' THEN value ELSE null END ) awesomeness
FROM facts
WHERE id IN (1,2,3)
GROUP BY id
如果您使用的是11g,则也可以使用PVOT
运算符。
但是,如果这代表了您的数据模型,则这种类型的实体属性数据模型通常效率会很低。你一般会好得多与列了一个表送达name
,height
,awesomeness
,等。
我有一个大约15万行的表,我必须使用JavaQuartz Scheduler一次获取1000行。要求是一次限制1000行,然后再限制1000行等(与MySQL限制查询相同)。 我正在使用以下查询: 问题是上面的查询返回了我在结果集中不需要的额外列rownum,因为返回的数据被传递给MapListHandler(),后者返回将结果转换为JSON,并且我将此JSON传递给不期望额外rownum列的We
在Crystal Reports中,我使用以下查询(针对Oracle数据库)为报表中的单个字段生成数据: 这可以很好地工作,并基于提供的{HB_As_At_Date}(the{?}语法是Crystal将参数值嵌入SQL(SQL)的方法。不过,上述查询的内容不是我的问题——我想做的是在几个不同的日期重复运行它,并将输出输入Crystal以供在报告中使用。 假设我希望在9月的每个星期一运行这个查询,我
问题内容: 我在单个SQL语句中从多个表中提取Sums时遇到问题。 我有三个表tblCases,tblTimesheetEntries和tblInvoices在tblCases和其他两个表之间存在一对多的关系。 我目前正在使用以下SQL语句 但是,这似乎重复了发票金额。例如,如果一个案例只有一张发票,但是说有4个时间表条目,则它将计算出发票金额的4倍作为该表的总和。 如果我将分组取出,然后运行以下
嗨,我有两张具有以下结构的表格 学生们 这里,COl1=ID,Col2=Name,Col3=SubjectCode,COl4=Col3中的标记,Col5=subjectCpde,Col6=Col5中的标记 另一个表格叫做主题 这里Col1=主题代码,COl2=学生表中引用的主题名称。 现在我的查询应该返回如下结果。它是如何实现的?
我需要读取excel文件并突出显示重复的行,而不需要编辑excel或添加新的列/行。我使用读取excel文件,并使用读取所有重复行,但不包括'mark4'。问题是,我无法提取这些行号来与一起使用,以突出显示excel中的那些行,因为这些行不包括在DF中。 我试过,但由于没有唯一的行,所以无法提取数据。 的输出为: [6行x170列] 我需要提取那些不属于excel列的行号,并将它们作为列表用于将来
我试图从跨多个工作表的考勤中找到员工ID,并将时间戳拉到单个工作表中。 我在Excel中做过类似的事情,我猜可以在谷歌表格中使用谷歌应用脚本完成。 如果有人能引导我使用谷歌表单中的内置或自定义功能,那将非常有帮助。