1

私はかなり複雑なレポートを受け取り、それを更新して、1 つまたはそれらにインストールされたより具体的なソフトウェアパッケージ。

メイン クエリの「簡略化された」バージョン (以下に示す) は機能しますが、残念ながらレポートには、同じコンピューター上の同じソフトウェア パッケージに対してほぼ重複する行が一覧表示されることがあります。1 つはインストール日があり、もう 1 つはインストールがありません。設置日のないレコードもありますが、設置日の対応するレコードはありません。

「AND arp.InstallationDate0 IS NOT NULL」を WHERE 句に追加することで、インストール日のない行を削除できますが、クエリを変更して、重複したレコードが存在する場合に、インストール日のあるものだけが表示されるようにするにはどうすればよいですか?インストールされていないレコードが 1 つだけ存在する場合、そのレコードが表示されますか?

ご協力いただきありがとうございます。

SELECT DISTINCT sys.Name0 , arp.DisplayName0 , arp.Version0 , arp.InstallDate0 

FROM v_R_System sys 

INNER JOIN (SELECT * FROM v_GS_ADD_REMOVE_PROGRAMS UNION SELECT * 
  FROM v_GS_ADD_REMOVE_PROGRAMS_64) arp ON sys.ResourceID = arp.ResourceID 

INNER JOIN v_FullCollectionMembership fcm ON sys.ResourceID = fcm.ResourceID 

WHERE arp.DisplayName0 IN (@productname) AND COALESCE (arp.Version0, '') LIKE @version  
  AND fcm.CollectionID IN (@selectcollection) 

ORDER BY sys.Name0
4

1 に答える 1

0

インストール日を集計関数と isnull 関数でラップします。

max(isnull(arp.InstallDate0, '31-Dec-1900')) as installdate0

group by句も必ず含めてください。

于 2012-12-16T02:24:03.433 に答える