Php MSSQL查询结果中的重复记录
我与MSSQL集成了系统连接。系统根据寄售编号获取所有记录。寄售编号采用整数形式,如(12到15)数字。查询工作正常,但获取了与事务时间(DATETIME列名)相关的行中的重复结果“在原始中心处理”。下面是我的查询和屏幕截图Php MSSQL查询结果中的重复记录,php,sql-server,Php,Sql Server,我与MSSQL集成了系统连接。系统根据寄售编号获取所有记录。寄售编号采用整数形式,如(12到15)数字。查询工作正常,但获取了与事务时间(DATETIME列名)相关的行中的重复结果“在原始中心处理”。下面是我的查询和屏幕截图 SELECT ct.transactionTime, st.TrackingStatus Event, ct.consignmentNumber, ct.currentLocation AS LOCATION, CON
SELECT ct.transactionTime,
st.TrackingStatus Event,
ct.consignmentNumber,
ct.currentLocation AS LOCATION,
CONVERT(NVARCHAR, c.bookingDate, 105) BookingDate,
CASE
WHEN ct.stateID = '18' THEN 'Consignment Arrived At ' + ct.currentLocation
+ ' Main Office' +
' on ' + CONVERT(NVARCHAR, transactionTime, 105)
WHEN ct.stateID = '1' THEN ' Conginment has been Booked on ' +
CONVERT(NVARCHAR, c.bookingdate, 105)
+ ' in ' + ct.currentLocation
WHEN ct.stateID = '2' OR ct.stateID = '3' OR ct.stateID = '4' THEN
'Processing at Origin HUB'
WHEN ct.stateID in ('5','6','7') THEN
'Reached at Destination HUB'
WHEN ct.stateID = '8' THEN
'Shipment on route '
+ CONVERT(NVARCHAR, transactionTime, 105)
+ ' in ' + ct.currentLocation
WHEN ct.stateID = '9' THEN
'Consignment has been MAWB - Manifested AWB Number: '
+ ct.mawbnumber + ' on ' + CONVERT(NVARCHAR, transactionTime, 105)
+ ' in ' + ct.currentLocation
WHEN ct.stateID = '10' THEN (
SELECT 'Consignment has been "' + ct.reason
--
+ ' '
+ '" Received By "' + (
CASE
WHEN rc.receivedBy IS NULL THEN ''
ELSE rc.receivedBy
END
) + '" Dated: ' + (
CASE
WHEN ct.stateID = '10' THEN LEFT(rc.deliveryDate, 10)
END
) + (
CASE
WHEN rc.time IS NULL THEN ''
ELSE RIGHT(rc.time, 8)
END
)
+ '" '
FROM runsheetconsignment rc
WHERE ct.consignmentnumber = rc.consignmentnumber
AND ct.runsheetnumber = rc.runsheetnumber
)
WHEN ct.stateID = '15' THEN 'Consignment has been ' + ct.reason
+ ' ' + CONVERT(NVARCHAR, transactionTime, 105) +
' in ' + ct.currentLocation
END Detail
FROM Consignment_Tracking_View ct
INNER JOIN Consignment c
ON ct.consignmentNumber = c.consignmentNumber
INNER JOIN MNP_ConsginmentTrackingStatus st
ON ct.stateID = st.StatusID
WHERE c.consignmentNumber = '591091000000051' and c.consignerAccountNo not in ('4B45','7240','4H86','4H87','4H88','4B87','7240','4B45','4H91','4H89','4H90','4F47')
ORDER BY ct.transactionTime desc
请帮帮我
记录不重复,Datetime列具有不同的值,将该列数据按转换转换为仅日期:
cast(列为日期)
,然后如果需要,仅在select语句中应用distinct
要根据您的评论获取状态相关的单个记录,请按如下方式使用分区:
;WITH T AS
(
SELECT [DateTime],
[Status],
Location,
ROW_NUMBER() OVER (PARTITION BY [Status],Location ORDER BY Location) AS PartNo
From TableName
)
SELECT
*
FROM T WHERE PartNo=1
任何人的帮助都会非常有用。记录不会重复,Datetime列有不同的值。谢谢你的消息。我想显示“在始发中心处理”的单个记录。我该怎么办?你是说每个状态有一条记录?如果你看到图像中有3条记录“在Origin HUB处理”,我只想显示一条。CAST(列为日期)在列中显示为空白。你说的“T”是什么意思?我不明白这些疑问。能否请您澄清?根据您的要求,每一行的状态和位置。你可以通过上面的陈述来达到你的目的。我会照原样使用上面的陈述吗?用我的名字换个名字就行了。我已经从图像输出中给出了解决方案