Sqlite 基于第二表的动态查询
我有一个多个符号的报价表 表引号 ID INT 符号NVARCHAR(6) 日期时间 价格小数(18,5) 表符号 符号NVARCHAR(6) 我只想从引号中提取符号,其符号也在临时表中,该临时表可能根据用户请求而变化Sqlite 基于第二表的动态查询,sqlite,Sqlite,我有一个多个符号的报价表 表引号 ID INT 符号NVARCHAR(6) 日期时间 价格小数(18,5) 表符号 符号NVARCHAR(6) 我只想从引号中提取符号,其符号也在临时表中,该临时表可能根据用户请求而变化 Create TABLE TempSymbol ( SYMBOL NVARCHAR(6) NOT NULL ); INSERT INTO TempSymbol(SYMBOL) VALUES ('MSFT'); INSERT INTO TempSymbol(SYMB
Create TABLE TempSymbol
(
SYMBOL NVARCHAR(6) NOT NULL
);
INSERT INTO TempSymbol(SYMBOL) VALUES ('MSFT');
INSERT INTO TempSymbol(SYMBOL) VALUES ('INTC');
INSERT INTO TempSymbol(SYMBOL) VALUES ('AAPL');
我想要一个从以下数据中返回的查询
日期时间symbol1 |价格1 | symbol2 |价格2 | symbol3 |价格3
2012-11-12 12:10:00 MSFT | 12.10 | INTC | 5.68 | AAPL | 16.89 2012-11-12 12:15:00 MSFT | 12.22 | INTC | 5.97 | AAPL | 16.22
这将返回我需要透视但在SQLite中不可用的记录是否还有其他方法可以尝试?感谢您的帮助。SQL正在解决您的问题,它的设计目的是:检索数据。您可以按DT添加
订单
,以使同一日期时间的记录相邻
如果你想一想,你会发现SELECT
不可能返回你想要的东西。它返回表行,SQL表行的长度为常量。因此,执行您称之为“枢轴”的操作不是SELECT
操作。您可能正在考虑电子表格中的数据透视。数据库不是电子表格
在这之后,最好使用任何一种语言的带有SQLite接口的小程序(例如Android中的Java;否则是C或TCL)来生成所需的报告。进行查询。将行作为哈希、数组或ODM记录返回。其余部分是对这些数据的几个循环。算法是:
last_dt = null
for row in all rows
if row.dt != last_dt
start new output line
print dt
last_dt = dt
end
print ' | ', row.symbol, ' | ', row.price
end
另一个注意事项:使用高级数据库功能,如存储过程和XML对象,您可以在SQL中实现这一点。XML对象可以有不同数量的字段。这里的限制是SQLite,它不提供这些特性 试试这个
SELECT DT, SYMBOL, PRICE FROM QUOTE where SYMBOL in (Select SYMBOL from TempSymbol)
它应该工作得很好,正如您在任何现代版本的SQLite中给出的那样。出什么事了?“pivot”是什么意思?我的查询将返回。。。符号datetime.price作为需要旋转的行。我需要这些行作为每个datetime列的列,TempSymbol中的符号为每个datetime共享这些列。谢谢,但结果返回所有仍然需要具有不同datetime的pivot的记录。是的,我就是这么想的。在这种情况下,我可以根据需要以编程方式编写查询。
SELECT DT, SYMBOL, PRICE FROM QUOTE where SYMBOL in (Select SYMBOL from TempSymbol)