테이블이 있습니다 (finances_history)
이 테이블은 단 하나의 테이블이지만 콘텐츠를 2 블록으로 나누었습니다. 아래 볼 수 있습니다 :
SQL : 다른 행 (다른 달)에있는 열에 동일한 값을 가진 사용자 ID를 선택하십시오.
userID || month || bill || value ------------------------------------ u01 || 201401 || energy || 0 u01 || 201402 || energy || 0 ------------------------------------ u02 || 201401 || energy || 0 u02 || 201402 || energy || 0 ------------------------------------ u03 || 201401 || energy || 75 u03 || 201402 || energy || 0 ------------------------------------ u04 || 201401 || energy || 90 u04 || 201402 || energy || 90 ------------------------------------ u05 || 201401 || energy || 85 u05 || 201402 || energy || 90 ------------------------------------ u06 || 201401 || energy || 0 u06 || 201402 || energy || 0 ------------------------------------
userID || month || bill || value ------------------------------------ u01 || 201401 || rent || 300 u01 || 201402 || rent || 300 ------------------------------------ u02 || 201401 || rent || 350 u02 || 201402 || rent || 400 ------------------------------------ u03 || 201401 || rent || 0 u03 || 201402 || rent || 0 ------------------------------------ u04 || 201401 || rent || 0 u04 || 201402 || rent || 0 ------------------------------------ u05 || 201401 || rent || 0 u05 || 201402 || rent || 0 ------------------------------------ u06 || 201401 || rent || 0 u06 || 201402 || rent || 0 ------------------------------------
이 테이블에 다른 사용자가 있습니다,하지만 두 달이 경우 년의 다른 달에서 정보를 (기록 월 - 201401, 월 - 201402).
동일한 사용자는 지불 할 두 가지 종류의 지폐 (이 경우에는 에너지와 임대료의 두 가지 종류 만)를 가질 수 있지만 사용자가 지불 할 지폐 중 하나를 가지고 있으면 (적어도 한 달 또는 두 가지 모두), 그는 다른 법안을 가지지 않을 것입니다 (두 달에 다른 법안에 값이 0이 될 것입니다 ...) 또는 두 달에 양쪽 모두 값 0 인 두 법안을 가진 사용자를 가질 수 있습니다.
적어도 4 개의 행과 두 달을 모두 고려한 값이 0 인 지폐 중 하나 이상을 가진 사용자 (사용자 ID)와 청구서의 값 (0이 아닌))는 두 달 모두 동일합니다.
그래서, 위의 샘플에서 사용자에게 u01 및 u04 (조건을 따르는 유일한 사람, 값이 다른 적어도 하나의 법안이 0이 될 수있는 "선택"이 무엇인지 찾고 있습니다. 개월 중 적어도 하나에서 그리고 이들 값은 동일합니다). 월 201,401에 같은 값이 법안의 임대료를 가지고 있으며, 201402.
사용자 U02 때문에 달 201,401과 201,402에 다른 값이 법안의 임대료가 선택되지 않았기 때문에
사용자 U01이 선택됩니다.
사용자 U03 때문에 선택하기 때문에 선택의와 법안 에너지를 가지고있다 달 201,401에 다른 값 법안 에너지와 201402.
사용자 U04을 가지고되지 않습니다 월 201,401에 다른 값이 법안 에너지를 가지고 있으며, 201402.
사용자 u06으로 인해 두 법안 (에너지와 임대료가 선택되지 않기 때문 개월 201,401에 화염 값과 201402.
사용자 U05이 선택되지 않음)을 201401 및 201402 개월의 값 0으로 설정합니다.
누군가가 나를 도울 수 있기를 바랍니다.
Ps .: MS SQL Server입니다.
감사합니다.
(쿼리가 데이터의 2 개보다 많은 개월 잘 작동합니다) 같은 그룹에있는 행의 번호를 사용할 수 있습니까? – Serpiton
그래,하지만 나는 SQL에 상당히 익숙하지 않다. 그리고 나는 거기에 가지 않는다. (이것은 querie의 일부에 지나지 않으며, 각 사용자에 대해 하나의 행을 가진 결과를 가지기 위해 CASE를 사용하고있다. 그리고 열은 rent_201401이고, rent_201402, energy_201401, energy_201402 (각자 기자 "가치"를 가져옴) ... 이것을 정렬 할 수있는 코드 아이디어가 있습니까? – user3634947
전혀 작동하지 않는 것을 보여주는 것이 nothig를 보여주는 것보다 낫습니다. 몇 가지 아이디어가 있지만 OVER' 절을 사용하면 SQLServer가 2005 이상입니까? – Serpiton