此查詢在Sql Server Management Studio中正常工作,但是當我嘗試在數據集中運行時&從日期時間選擇器傳遞日期(@Param2 & @Pram3)它拋出一個異常轉換失敗。我不知道什麼是錯的,我的其他查詢工作正常。這是因爲聯盟嗎?從字符串轉換日期和/或時間時轉換失敗
.NET代碼
startDatePicker.Format = DateTimePickerFormat.Short;
endDatePicker.Format = DateTimePickerFormat.Short;
DataTable ntwTable = ntw.GetData(owner,start,end);
start = startDatePicker.Value.ToShortDateString();
end = endDatePicker.Value.ToShortDateString();
SQL
SELECT o.Name, SUM(sq.SQuantity * sq.SRate) AS TotalSale, SUM(sq.PrQuantity * sq.PrRate) AS TotalPurchase, (SUM(sq.PQuantity) - SUM(sq.SQuantity))
* (SUM(sq.PQuantity * sq.PRate)/SUM(sq.PQuantity)) AS Inventory
FROM (SELECT OwnerId, CompanyId, Quantity AS PQuantity, RatePerShare AS PRate, 0 AS SQuantity, 0 AS SRate, 0 AS PrQuantity, 0 AS PrRate, Date
FROM Purchase
UNION ALL
SELECT OwnerId, CompanyId, 0 AS PQuantity, 0 AS PRate, 0 AS SQuantity, 0 AS SRate, Quantity AS PrQuantity, RatePerShare AS PrRate, Date
FROM Purchase AS pr
UNION ALL
SELECT OwnerId, CompanyId, Quantity AS PQuantity, 0 AS PRate, 0 AS SQuantity, 0 AS SRate, 0 AS PrQuantity, 0 AS PrRate, Date
FROM Bonus
UNION ALL
SELECT OwnerId, CompanyId, Quantity AS PQuantity, CostOfShare AS PRate, 0 AS SQuantity, 0 AS SRate, 0 AS PrQuantity, 0 AS PrRate, Date
FROM RightShare
UNION ALL
SELECT OwnerId, CompanyId, 0 AS PQuantity, 0 AS PRate, Quantity AS SQuantity, RatePerShare AS SRate, 0 AS PrQuantity, 0 AS PrRate, Date
FROM Sales) AS sq INNER JOIN
Owner AS o ON o.OwnerId = sq.OwnerId
WHERE (o.OwnerId = @Param1) AND (sq.Date BETWEEN @Param2 AND @Param3)
GROUP BY sq.CompanyId, o.Name
什麼是@Param2和@Param3的數據類型?你如何在代碼中調用查詢? – LittleBobbyTables
你沒有顯示調用代碼。但幾乎肯定是因爲(在某些情況下)會導致'datetime'值不必要地轉換爲字符串。然後事情轉換回'datetime'值 –
我們可以看到代碼在哪裏通過它...如果它在SSMS中,而不是在C#中,它可能是一個傳入它的問題。 – logixologist