我正在尝试获取使用3列中的连接值作为WHERE子句参数的数据。这可能吗?
set_start_method('spawn')
OR
SELECT [Less Total Backlog QTY] - Daily_Capacity FROM b WHERE
PrimaryKey in (select concat_value from b)
我使用了第二个,但没有结果。但是当我尝试
时SELECT [Less Total Backlog QTY] - Daily_Capacity FROM b WHERE
PrimaryKey = CONCAT(tmp_date,Plant,FamilyName)
我得到了所需的输出。 我只需要将它应用于所有行。
我想要完成的是计算总积压数量列
公式为总积压数量(前一天) - Daily_Capacity 。
因此,对于 NewDate 17/04/2018 ,总积压数量的值将为 375654 。 (381,654 - 600)
等等..
示例数据:
答案 0 :(得分:0)
SELECT [Less Total Backlog QTY] - Daily_Capacity FROM b WHERE
PrimaryKey = CONCAT(tmp_date,Plant,FamilyName)
肯定会有效。
CONCAT
函数将三个值组合成一个值。
可能是您的主键列没有该值
答案 1 :(得分:0)
在您的示例数据中:
PrimaryKey来自NewDate,Plant和FamilyName的串联。
SELECT [Less Total Backlog QTY] - Daily_Capacity FROM b WHERE PrimaryKey = CONCAT(CONVERT(date,NewDate,120),Plant,FamilyName)
语法:CONVERT(data_type(length),expression,style) 对于您可以使用的样式120,请参阅此链接以供参考:https://www.w3schools.com/sql/func_sqlserver_convert.asp
答案 2 :(得分:0)
如果您的tmp_date不是有效的DATE
数据类型,那么CONVERT
将其转换为DATE
并尝试以下操作。
试试这个:
SELECT [Less Total Backlog QTY] - Daily_Capacity
FROM b
WHERE PrimaryKey = CONCAT(CONVERT(date, tmp_date, 105),Plant,FamilyName)
将VARCHAR更改为DATE格式:
DECLARE @tab TABLE(tmp_date DATETIME,Plant VARCHAR(10),FamilyName VARCHAR(10))
INSERT INTO @tab VALUES ('16-04-2018','CMKK','B113')
SELECT CONCAT(CONVERT(date, tmp_date, 105),Plant,FamilyName)Concat_date_Value
FROM @tab
<强> 输出 强>:
Concat_date_Value
2018-04-16CMKKB113