- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有一个 SQL 查询的问题,该查询在 Microsoft SQL Server CE(不支持 PIVOT)上正常运行。查询如下:
SELECT
*, [1] as IMGN1, [2] as IMGN2, [3] as IMGN3,
[4] as IMGN4, [5] as IMGN5, [6] as IMGN6,
[7] as IMGN7, [8] as IMGN8, [9] as IMGN9,
[10] as IMGN10
FROM
(SELECT
area.CoilId as CID, area.DEFECTID,
(SELECT SUM(s2.endposmd - s2.startposmd)
FROM sections s2
WHERE s2.OutCoilID = 999999
AND s2.InCoilId <= area.coilid) AS POSITIONMD,
d1.DNO as CAMERADEFECTNO, d1.IMAGE_NO as IMAGE_NO,
area.MERGEDTO as MERGEDTO
FROM
(OutCoils AS oc
INNER JOIN
sections AS s ON oc.OutCoilId = s.OutCoilId
INNER JOIN
defects AS area ON area.coilid = s.InCoilId
AND area.PositionMD >= s.StartPosMD
AND area.PositionMD <= s.EndPosMD
INNER JOIN
defects AS d1 ON d1.CoilId = area.CoilId
AND d1.MergedTo = area.DEFECTID)
WHERE
oc.OutCoilID = 999999 AND area.MergedTo = -2) AS SourceTable
PIVOT
(MIN([CAMERADEFECTNO]) FOR [IMAGE_NO]
IN ([1],[2],[3],[4],[5],[6],[7],[8],[9],[10])
) AS PivotTable
ORDER BY
PositionMD;
如何将其转换为非 PIVOT 版本的有效 SQL 查询?
我尝试了一些使用 CASE 的东西,但是我在用于获取 POSITIONMD 的聚合函数中的子查询有问题,其余部分已经正常工作。知道如何获得 POSITIONMD 吗?
SELECT
area.DEFECTID as DEFECTID,
min(CASE when d1.MERGEDTO = area.DEFECTID then area.COILID end) CID,
min(CASE when d1.MERGEDTO = area.DEFECTID then area.MERGEDTO end) MERGEDTO,
min(CASE when d1.MERGEDTO = area.DEFECTID then (select sum(s2.endposmd - s2.startposmd) from sections s2 where s2.OutCoilID=999999 and s2.InCoilId<=area.coilid) end) POSITIONMD,
sum(CASE when d1.IMAGE_NO = 1 then (d1.DNO) end) IMGN1,
sum(CASE when d1.IMAGE_NO = 2 then (d1.DNO) end) IMGN2,
sum(CASE when d1.IMAGE_NO = 3 then (d1.DNO) end) IMGN3,
sum(CASE when d1.IMAGE_NO = 4 then (d1.DNO) end) IMGN4,
sum(CASE when d1.IMAGE_NO = 5 then (d1.DNO) end) IMGN5,
sum(CASE when d1.IMAGE_NO = 6 then (d1.DNO) end) IMGN6,
sum(CASE when d1.IMAGE_NO = 7 then (d1.DNO) end) IMGN7,
sum(CASE when d1.IMAGE_NO = 8 then (d1.DNO) end) IMGN8,
sum(CASE when d1.IMAGE_NO = 9 then (d1.DNO) end) IMGN9,
sum(CASE when d1.IMAGE_NO = 10 then (d1.DNO) end) IMGN10
FROM ( steinb.OutCoils AS oc
INNER JOIN steinb.sections AS s ON oc.OutCoilId=s.OutCoilId
INNER JOIN steinb.defects AS area ON area.coilid=s.InCoilId AND area.PositionMD>=s.StartPosMD AND area.PositionMD<=s.EndPosMD
INNER JOIN steinb.defects AS d1 ON d1.CoilId=area.CoilId AND d1.MergedTo=area.DEFECTID AND d1.IMAGE_NO!=0)
WHERE oc.OutCoilID=999999 GROUP BY area.DEFECTID ORDER BY PositionMD;
非常感谢。
最佳答案
明白了。我相信你只需要删除 MIN:
SELECT
DEFECTID = area.DEFECTID
, CID = MIN(CASE when d1.MERGEDTO = area.DEFECTID then area.COILID end)
, MERGEDTO = MIN(CASE when d1.MERGEDTO = area.DEFECTID then area.MERGEDTO end)
, POSITIONMD = CASE when d1.MERGEDTO = area.DEFECTID then (select sum(s2.endposmd - s2.startposmd) from sections s2 where s2.OutCoilID=999999 and s2.InCoilId<=area.coilid) END
, IMGN1 = sum(CASE when d1.IMAGE_NO = 1 then (d1.DNO) END)
, IMGN2 = sum(CASE when d1.IMAGE_NO = 2 then (d1.DNO) end)
, IMGN3 = sum(CASE when d1.IMAGE_NO = 3 then (d1.DNO) end)
, IMGN4 = sum(CASE when d1.IMAGE_NO = 4 then (d1.DNO) end)
, IMGN5 = sum(CASE when d1.IMAGE_NO = 5 then (d1.DNO) end)
, IMGN6 = sum(CASE when d1.IMAGE_NO = 6 then (d1.DNO) end)
, IMGN7 = sum(CASE when d1.IMAGE_NO = 7 then (d1.DNO) end)
, IMGN8 = sum(CASE when d1.IMAGE_NO = 8 then (d1.DNO) end)
, IMGN9 = sum(CASE when d1.IMAGE_NO = 9 then (d1.DNO) end)
, IMGN10 = sum(CASE when d1.IMAGE_NO = 10 then (d1.DNO) end)
FROM ( steinb.OutCoils AS oc
INNER JOIN steinb.sections AS s ON oc.OutCoilId=s.OutCoilId
INNER JOIN steinb.defects AS area ON area.coilid=s.InCoilId AND area.PositionMD>=s.StartPosMD AND area.PositionMD<=s.EndPosMD
INNER JOIN steinb.defects AS d1 ON d1.CoilId=area.CoilId AND d1.MergedTo=area.DEFECTID AND d1.IMAGE_NO!=0)
WHERE oc.OutCoilID=999999 GROUP BY area.DEFECTID ORDER BY PositionMD;
关于当 PIVOT 在 SQL Server CE 中不可用时的 SQL 等效项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54949614/
我有 Windows CE 5.0 设备,它不支持任何硬件加速。 我正在寻找一些好的 2d 图形库来做以下事情。 我更喜欢 Compact .Net Framework 中的后端编程。 使用抗锯齿绘制
我有一个 POS 软件,需要为 windows CE 开发一个收集模块,以便在 Honeywell Dolphin 6100 设备上运行。 我需要开发一个在 Honeywell 6100 设备上运行的
我必须找出 Windows CE 4.0/5.0 设备上的内存泄漏问题。是否有任何工具可以向我显示所有进程信息,如内存、句柄数...以便我可以识别罪魁祸首进程。 有没有CE 4.0/5.0的内存泄漏检
我正在开发一个网站并且有一个 htaccess 规则如下:RewriteRule ^(ac|bc|cd)/(.*) $2?folder=$1 [L,QSA] 但是,我想在 domain.com 之后传
我是 CE 环境的新手,我想为在 CE(5 及更高版本)上运行的计算机(英特尔)创建应用程序。我到底需要什么才能开始,我要去哪里?我以前从未使用过 CE,但我确实有使用 C、C++、C# 和 Java
是否有等效于 isatty()在 Windows CE 上?换句话说,有没有办法在代码中检测 stdin/stdout/stderr 是否已被重定向? 最佳答案 你可以调用 GetStdIoPath(
我开发了一个基于媒体的应用程序,该应用程序在带有 Win CE 的设备上运行。我需要一个静音/取消静音按钮来控制应用程序音量。我已经使用 .Net 紧凑型框架开发了该应用程序。 最佳答案 我在 Win
我正在寻找WinCE的开发板,最好有以下接口(interface): VGA/DVI 屏幕 用于 kb/鼠标的 USB 以太网(10Mbit 就可以,100 会更好 ;-) ) 存储(例如:SD/MM
长期以来,您可以做到这一点 execute multiple statements with SQL CE .事实上我正在使用 SQL Server Compact Toolbox做到这一点。但是当我
我正在使用 CE 6.0 处理一个项目,我需要重建树。我的问题是我必须将树更新到 2009 年 5 月,这需要 2008 年汇总和以下 5 个月度更新,但我找不到它们(有 2009 年汇总和以下 20
甚至需要定期压缩 SQL CE 数据库吗?自动收缩就足够了吗?我们的平均数据库大小约为 100Mb,大用户达到 400-500Mb(但这种情况非常罕见)。如果我们必须手动压缩,我们如何判断何时应该压缩
我打算在一个小型但生产的网站中使用SQL CE 4.0,我想知道SQL CE 4.0可以处理多少负载: 并发连接数, 每个表的行数和 数据库的总大小。 最佳答案 可能对您有用的是Scott Guthr
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a software
我不知道这段代码有什么问题,它现在给了我一天的错误: select row_number() over(order by s.title) as rowNumber, s.id from story
我希望能够在启动时检查损坏的数据库,然后以编程方式修复它。我可以 do that很容易。 我的问题是我想测试事情是否按我期望的方式工作。有谁知道故意破坏数据库的方法,以便我可以测试我的代码? 最佳答案
我正在尝试在 Windows CE 6 设备上配置 SMB 文件共享服务器。 我最初的尝试主要是使用桌面版本的 NK.exe。 当我启动时,SMB0: 作为 smbserver.dll 运行 我已经设
我接管了一个 Windows-CE 6.0 应用程序,我想将其移植到其他平台。它是一个相对简单、独立的 GUI 应用程序,使用嵌入式 C++ 4.0 版编写 我感兴趣的第一个目标是常规 Windows
我正在尝试使用 SQL Server Compact Edition 3.5 作为销售应用程序的数据库后端。将安装 3-4 个 Windows 窗体应用程序,所有这些应用程序(通过 LINQ2SQL)
我正在编写一个 wpf destop 应用程序,并且想使用 SQL Server CE 作为后端。我正在尝试想出一种进行有效数据分页的好方法。在 SQL Server Express 中,我可以执行以
由于谷歌没有提供我想知道的内容,我尝试询问 stackoverflow :) sql ce 3.5 数据库的最大并发连接数是多少? 谢谢 j. 最佳答案 我相信您正在寻找的信息是 SQL Server
我是一名优秀的程序员,十分优秀!