我有两个表(SimCard)和(Rental_SimCard)
Simcard只包含该simcard的信息,如id、电话号码、simcard号码。
Rental_SimCard将为每一次简单卡的租金添加一个记录
Rental_SimCard - SimCardID - DateOut - DateIn
0 - 1 - 1/3/2017 - 1/4/2017
1 - 1 - 1/5/2017 - 1/6/2017
2 - 1 - 1/7/2017 - NULL
3 - 2 - 1/7/2017 - NULL
4 - 3 - NULL - NULL我想显示simcard的记录,它只有当DateOut为NULL时才有最大的DateOut。
我目前使用的代码
string sqlquery = "Select *, " +
"CASE WHEN MAX(CASE WHEN DateOut IS NULL THEN 1 ELSE 0 END) = 0 THEN " +
"MAX(DateOut) END AS MaxDateOut FROM SimCard INNER JOIN Rental_SimCard ON Rental_SimCard.SimCardID=SimCard.SimCardID " +
"GROUP BY (Every Single Column In the two tables)我按每一列分组,因为我一直收到这个错误。
列'SimCard.SimCardID‘在select列表中无效,因为它既不包含在聚合函数中,也不包含在GROUP BY子句中。
现在,我的查询为在Rental_SimCard中重新创建的每条记录从simcard表返回一个副本。
我想要的结果应该是
Rental_SimCard - SimCardID - DateOut(MAX) - DateIn - SimCardRecords...
2 - 1 - 1/7/2017 - NULL - ...
3 - 2 - 1/7/2017 - NULL - ...
4 - 3 - NULL - NULL - ...发布于 2017-03-01 09:51:45
您也可以使用CROSS APPLY
SELECT *
FROM SimCard S
CROSS APPLY (SELECT TOP 1 *
FROM Rental_SimCard R
WHERE R.SimCardId=S.SimCardId
ORDER BY DateOut DESC) T发布于 2017-03-01 09:44:32
SELECT MAX(Rental_SimCard)
,SimCard.SimCardId
,MAX(DATEOut)
,MAX(DateIn)
,MAX(SimCardRecords)
FROM SimCard
INNER JOIN RENTAL_SIMCARD ON SimCard.SimCardId = Rental_SimCard.SimCardID
GROUP BY SimCard.SimaCardId发布于 2017-03-01 09:53:32
简单地用SimCardId进行内部连接和分组
SELECT s.SimCardId
,max(Rental_SimCard)
,max(DATEOut)
,max(DateIn)
,max(SimCardRecords)
FROM SimCard s
INNER JOIN RENTAL_SIMCARD rs ON s.SimCardId = rs.SimCardID
GROUP BY s.SimCardIdhttps://stackoverflow.com/questions/42528181
复制相似问题