当执行 returns 什么都没有的查询时,会创建什么样的 table?
What kind of table is created when executing a query that returns nothing?
我正在使用 petl 并尝试使用查询中的值创建一个简单的 table。我写了以下内容:
@staticmethod
def get_base_price(date):
# open connection to db
# run SQL query to check if price exists for that date
# set base price to that value if it exists
# set it to 100 if it doesn't
sql = '''SELECT [TimeSeriesValue]
FROM [RAP].[dbo].[TimeSeriesPosition]
WHERE TimeSeriesTypeID = 12
AND SecurityMasterID = 45889
AND FundID = 7
AND EffectiveDate = %s''' % date
with self.job.rap.connect() as conn:
data = etl.fromdb(conn, sql).cache()
return data
我正在连接到数据库,如果该日期有值,那么我将能够创建一个 table,如下所示:
+-----------------+
| TimeSeriesValue |
+=================+
| 100 |
+-----------------+
但是,如果查询 returns 什么都没有,那么 table 会是什么样子?
如果查询 returns 什么都没有,我想将 TimeSeriesValue 设置为 100。不知道该怎么做。
您应该在执行语句时传递参数而不是修改字符串。 .但这不是你问题的核心。
可能最简单的解决方案是完成 SQL 中的所有工作。如果您期望查询最多一行,则:
SELECT COALESCE(TimeSeriesValue, 100) as TimeSeriesValue
FROM [RAP].[dbo].[TimeSeriesPosition]
WHERE TimeSeriesTypeID = 12 AND
SecurityMasterID = 45889 AND
FundID = 7 AND
EffectiveDate = %s
这将始终 return 一行,如果未找到任何内容,它将放入 100
值。
returns 什么都没有的查询只会显示列名,下面什么也没有。我会尝试这样的事情:
IF(TimeSeriesValue IS NOT NULL)
<your query>
ELSE
SET TimeSeriesValue = 100
我正在使用 petl 并尝试使用查询中的值创建一个简单的 table。我写了以下内容:
@staticmethod
def get_base_price(date):
# open connection to db
# run SQL query to check if price exists for that date
# set base price to that value if it exists
# set it to 100 if it doesn't
sql = '''SELECT [TimeSeriesValue]
FROM [RAP].[dbo].[TimeSeriesPosition]
WHERE TimeSeriesTypeID = 12
AND SecurityMasterID = 45889
AND FundID = 7
AND EffectiveDate = %s''' % date
with self.job.rap.connect() as conn:
data = etl.fromdb(conn, sql).cache()
return data
我正在连接到数据库,如果该日期有值,那么我将能够创建一个 table,如下所示:
+-----------------+
| TimeSeriesValue |
+=================+
| 100 |
+-----------------+
但是,如果查询 returns 什么都没有,那么 table 会是什么样子? 如果查询 returns 什么都没有,我想将 TimeSeriesValue 设置为 100。不知道该怎么做。
您应该在执行语句时传递参数而不是修改字符串。 .但这不是你问题的核心。
可能最简单的解决方案是完成 SQL 中的所有工作。如果您期望查询最多一行,则:
SELECT COALESCE(TimeSeriesValue, 100) as TimeSeriesValue
FROM [RAP].[dbo].[TimeSeriesPosition]
WHERE TimeSeriesTypeID = 12 AND
SecurityMasterID = 45889 AND
FundID = 7 AND
EffectiveDate = %s
这将始终 return 一行,如果未找到任何内容,它将放入 100
值。
returns 什么都没有的查询只会显示列名,下面什么也没有。我会尝试这样的事情:
IF(TimeSeriesValue IS NOT NULL)
<your query>
ELSE
SET TimeSeriesValue = 100