Sql 连接存储过程中的字符串
我正在从Python调用SQL Server中的一个存储过程。但是,根据Python中的条件,需要传入一个联合字符串 以下是主存储过程查询的外观:Sql 连接存储过程中的字符串,sql,sql-server,Sql,Sql Server,我正在从Python调用SQL Server中的一个存储过程。但是,根据Python中的条件,需要传入一个联合字符串 以下是主存储过程查询的外观: BEGIN SET NOCOUNT ON; SELECT mbh.id, COALESCE(oc.DowntimeReasonLevel1Name, 'Nothing for Now') AS 'DowntimeReasonLevel1Name', COALESCE(osw.DowntimeReasonLevel
BEGIN
SET NOCOUNT ON;
SELECT
mbh.id,
COALESCE(oc.DowntimeReasonLevel1Name, 'Nothing for Now') AS 'DowntimeReasonLevel1Name',
COALESCE(osw.DowntimeReasonLevel2Name, 'Nothing for Now') AS 'DowntimeReasonLevel2Name',
CAST(SUM(DATEDIFF(SECOND, de.start_time, de.end_time))/60.0 AS decimal (8,2)) as Duration
FROM
mixer_downtime_event mde
JOIN
downtime_event de ON de.id = mde.downtime_event_id
JOIN
oee_status_word osw ON osw.id = de.oee_status_word_id
JOIN
oee_category oc ON oc.id = osw.oee_category_id
JOIN
mixer_batch_history mbh ON mbh.id = mde.mixer_batch_history_id
JOIN
compound_process cp ON cp.id = mbh.compound_process_id
JOIN
compound c ON c.id = cp.compound_id
WHERE
mde.mixer_batch_history_id IN (@IdList)
AND osw.id <> 9000
AND DATEDIFF(MINUTE, de.start_time, de.end_time) > 0
GROUP BY
mbh.id, DowntimeReasonLevel1Name, DowntimeReasonLevel2Name
--+
--@downtimeUnion
END
或者可以是空白字符串
如何在存储过程中将此查询连接在一起?将
@Duration
作为参数传递,然后添加:
UNION ALL
SELECT NULL,
'Changeover' AS DowntimeReasonLevel1Name,
'Changeover' AS DowntimeReasonLevel2Name,
@Duration as Duration
如果希望这是有条件的,那么可以让@Duration
作为条件的标志执行双重任务:
UNION ALL
SELECT NULL,
'Changeover' AS DowntimeReasonLevel1Name,
'Changeover' AS DowntimeReasonLevel2Name,
v.Duration as Duration
FROM (VALUES (@Duration)) v(Duration)
WHERE v.Duration IS NOT NULL;
你不能。您现有的查询有四列,而传入的值仅占三列。@GordonLinoff,对不起,忘记更新查询的这一部分,我没有使用mbh.id,因此它的两端最终将具有相同的列数。!!我遇到的问题是将整个联合部分与主查询连接在一起。因为,它必须是完全动态的!(根据条件,我可以将转换或试验等列为一列)
UNION ALL
SELECT NULL,
'Changeover' AS DowntimeReasonLevel1Name,
'Changeover' AS DowntimeReasonLevel2Name,
v.Duration as Duration
FROM (VALUES (@Duration)) v(Duration)
WHERE v.Duration IS NOT NULL;