Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# '在需要条件的上下文中指定的非布尔类型的表达式,当日期介于_C#_Sql - Fatal编程技术网

C# '在需要条件的上下文中指定的非布尔类型的表达式,当日期介于

C# '在需要条件的上下文中指定的非布尔类型的表达式,当日期介于,c#,sql,C#,Sql,我正在创建一个sql查询,我想制作损益表 但我的查询中有一个错误: '在需要条件的上下文中指定的非布尔类型的表达式,靠近',' 如何修复此问题?只需识别您的SQL命令,就可以看到其中有错误,请看: SELECT CAST(Pay_invoice_details.Barcode AS INT), SUM(CAST(Pay_invoice_details.Total_items_price AS INT)) AS 'Total Payes', SUM(CAST(Pay_invoic

我正在创建一个sql查询,我想制作损益表 但我的查询中有一个错误:

'在需要条件的上下文中指定的非布尔类型的表达式,靠近','


如何修复此问题?

只需识别您的SQL命令,就可以看到其中有错误,请看:

SELECT 
  CAST(Pay_invoice_details.Barcode AS INT), 
  SUM(CAST(Pay_invoice_details.Total_items_price AS INT)) AS 'Total Payes', 
  SUM(CAST(Pay_invoice_details.Quantity AS INT) * CAST(Buy_invoice_details.Purchase_price AS INT)) AS 'Total Purchases', 
  CAST(Pay_invoice_details.Invoice_date AS DATE), 
  CAST(Buy_invoice_details.Barcode AS INT), 
  CAST(Buy_invoice_details.Invoice_date AS DATE), 
  SUM(CAST(Payouts_details.Total_amount AS INT)) AS 'Total Payouts' 
FROM 
  Pay_invoice_details,
  Buy_invoice_details,
  Payouts_details 
where 
  Pay_invoice_details.Barcode=Buy_invoice_details.Barcode and 
  Pay_invoice_details.Invoice_date, 
  Buy_invoice_details.Invoice_date, 
  Payouts_details.Invoice_date 
    between '" + from.Value.ToString("yyyy-MM-dd") + "' and'" + to.Value.ToString("yyyy-MM-dd") + "'
在WHERE子句中,您使用了一个包含3列的列表来比较日期范围(使用BETWEEN)。这不是它的工作原理。如果你的意图是考虑第一列,如果它是NULL,考虑第二列,如果它也是NULL,考虑第三,你应该使用CueSeCe函数。就像这样:

(...)
where 
  Pay_invoice_details.Barcode=Buy_invoice_details.Barcode and 
  COALESCE(
    Pay_invoice_details.Invoice_date, 
    Buy_invoice_details.Invoice_date, 
    Payouts_details.Invoice_date
  ) between '" + from.Value.ToString("yyyy-MM-dd") + "' and'" + to.Value.ToString("yyyy-MM-dd") + "'

哦,看起来像是请研究如何正确使用查询中的参数在您的查询中确定。这是无效的。为什么不先在SQLServer控制台中完善一下呢。然后插入,网络?
(...)
where 
  Pay_invoice_details.Barcode=Buy_invoice_details.Barcode and 
  COALESCE(
    Pay_invoice_details.Invoice_date, 
    Buy_invoice_details.Invoice_date, 
    Payouts_details.Invoice_date
  ) between '" + from.Value.ToString("yyyy-MM-dd") + "' and'" + to.Value.ToString("yyyy-MM-dd") + "'