我正在迁移一个将数据从mysql数据库拉到sql数据库的项目。问题是我遇到了重复的记录,当我使用mysql数据库时,我能够快速解决这些记录。另一方面,sql给我带来了问题。
我有两个表:allorderdata和callsettings
这两个表都有一列标记为ordernumber。有时两个表上都有多条具有相同订单号的记录。在这种情况下,我只需要显示一条记录。
这就是我现在所拥有的:
$dt = $_GET ["dt"];
$sql = "SELECT
A.OrderNumber,
A.DetailShipDate,
A.ETC,
C.OrderNumber,
C.ETC
FROM AllOrderData A
INNER JOIN CallSettings C ON A.OrderNumber = C.OrderNumber
WHERE A.DetailShipDate = '$dt'";
我试图添加distinct和group by,但我读到它们被用于distinct行,只是不起作用。
当我使用mysql时,我把所有的数据都放在一个表中。不幸的是,这不再是一个选项,但查询非常简单:
$sql_string = "SELECT * FROM orders WHERE DetailShipDate='$dt' group by Order_Number
我尝试了以下方法:
$sql = "SELECT x.OrderNumber,
x.EnteredBy,
x.Order_Number,
x.Contact_Name
FROM (SELECT A.OrderNumber,
A.EnteredBy,
C.Order_Number,
C.Contact_Name
row_number() OVER (PARTITION BY A.OrderNumber
ORDER BY C.Order_Number) rn
FROM AllOrderData A
INNER JOIN CallSettings C
ON A.OrderNumber = C.Order_Number
WHERE A.DetailShipDate = '$dt') x
WHERE x.rn = 1;";
出现了这个错误:
查询准备/执行出错。数组([0]=>数组([0]=>42000[sqlstate]=>42000[1]=>102[code]=>102[2]=>[microsoft][sql server native client 11.0][sql server]靠近“(”的语法不正确[message]=>[microsoft][sql server native client 11.0][sql server]靠近“(”)的语法不正确
1条答案
按热度按时间rkkpypqq1#
你可以用
row_number()
. 按订单号进行分区和排序。