Sqlite 基于第二表的动态查询

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

我有一个多个符号的报价表

表引号 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(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)