tblData 및 tblUser가 있습니다.SQLServer에서 사용자가 수행 할 수있는 트랜잭션을 가져 오는 쿼리
나는 사용자가 취할 수있는 트랜잭션 만 표시하려고합니다.
DisplayNum의 트랜잭션 중 하나가 tblUser의 TransType과 일치하지 않으면 해당 DisplayNum에서 TransType을 사용할 수 없습니다.
tblData 및 tblUser가 있습니다.SQLServer에서 사용자가 수행 할 수있는 트랜잭션을 가져 오는 쿼리
나는 사용자가 취할 수있는 트랜잭션 만 표시하려고합니다.
DisplayNum의 트랜잭션 중 하나가 tblUser의 TransType과 일치하지 않으면 해당 DisplayNum에서 TransType을 사용할 수 없습니다.
일부 채팅 후 함께 넣어 최종 버전 :
SELECT DISTINCT q2.Id, q3.SubQ, q1.DisplayNum, q1.TransType, q1.TotalTransTime, q1.UserId
FROM (
SELECT D.DisplayNum, HighestTransTime.TransType, SUM(D.TransTime) AS TotalTransTime, U.UserId
FROM tblData D
INNER JOIN tblUser U ON D.TransType=U.TransType
INNER JOIN
(
SELECT DISTINCT innerQuery.DisplayNum, TransType
FROM tblData
INNER JOIN
(
SELECT DisplayNum, MAX(TransTime) AS TransTime FROM tblData GROUP BY DisplayNum
) innerQuery ON tblData.DisplayNum = innerQuery.DisplayNum AND tblData.TransTime = innerQuery.TransTime
) HighestTransTime ON D.DisplayNum=HighestTransTime.DisplayNum
WHERE U.UserId = 10
AND D.TransType IN (SELECT TransType FROM tblUser WHERE tblUser.UserId = U.UserId)
AND D.DisplayNum NOT IN (SELECT DisplayNum FROM tblData WHERE TransType NOT IN (SELECT TransType FROM tblUser WHERE tblUser.UserId = U.UserId))
GROUP BY D.DisplayNum, HighestTransTime.TransType, U.UserId
) q1
INNER JOIN (SELECT DisplayNum, MAX(ID) AS ID FROM tblData GROUP BY DisplayNum) q2 ON q1.DisplayNum = q2.DisplayNum
INNER JOIN (SELECT SubQ, ID FROM tblData) q3 ON q2.ID=q3.ID
ORDER BY q2.ID
은 지금까지 당신이 TransType
열을 조인 간단한 사용할 수 있습니다 이해할 수있다.
SELECT *
FROM dbo.tblData INNER JOIN dbo.tblUser ON
dbo.tblData .TransType = dbo.tblUser .TransType
이 답변은 요구 사항을 충족시키지 못합니다. DisplayNum의 트랜잭션이 tblUser의 TransType과 일치하지 않는 경우 사용자는 해당 DisplayNum에서 TransType을 사용할 수 없습니다. '또한 요구 사항에 따라 총 transtime을 합산하지 않습니다. – jpw
원하는 출력을 명확히 할 수 있습니까? 왜 C3가 포함되어 있지 않고 왜 D5 Checkout 10이 가치로서 9가 아닌 10을 보여 줍니까? tblUser에도 DisplayNum 필드가 포함되어 있습니까? – jpw
@jpw 사용자가 Take In을 사용하지 않아 C3가 포함되지 않습니다. DisplayNum에 대해 가장 높은 값만 출력해야하는 마지막 행은 생략하십시오. – Apollo
@jpw D5 Check out + D5 No Shoe Trans Times가 10에 추가되기 때문에 D5는 TransTime에 대해 10입니다. – Apollo