私は別の列に、例えば、私の「PrinterCounter.EndPagesColor」と「PrinterCounter.EndPagesMono」の句は、私がこの場所を使用したいのWHERE異なる指定する必要があります。SQL Serverの - 別の列に別のWHEREの句
WHERE
PrinterCounter.ReadTime >= '01/07/2017 00:00:01'
AND PrinterCounter.ReadTime <= '31/07/2017 23:59:59'
AND Printer.WasRemoved = 0
AND ClientId = 6
AND SubClientId = 752
ORDER BY
PrinterCounter.ReadTime DESC
が、 "PrinterCounter.StartPagesColor" と "PrinterCounter.StartPagesMonoは" 私はこの1つをしたいために:
SELECT DISTINCT
Printer.[PrinterId],
Printer.[PlaceId],
PrinterCounter.ReadTime,
PrinterCounter.EndPagesColor,
PrinterCounter.EndPagesMono,
PrinterCounter.StartPagesColor,
PrinterCounter.StartPagesMono
FROM
[~client_database~].[dbo].[Printers] AS Printer
JOIN
[~system_database~].[dbo].[PrinterCounter] AS PrinterCounter ON PrinterCounter.PrinterId = Printer.PrinterId
WHERE
PrinterCounter.ReadTime >= '01/07/2017 00:00:01'
AND PrinterCounter.ReadTime <= '31/07/2017 23:59:59'
AND Printer.WasRemoved = 0
AND ClientId = 6
AND SubClientId = 752
ORDER BY
PrinterCounter.ReadTime ASC
:
WHERE
PrinterCounter.ReadTime >= '01/07/2017 00:00:01' AND
PrinterCounter.ReadTime <= '31/07/2017 23:59:59' AND
Printer.WasRemoved = 0 AND
ClientId = 6 AND
SubClientId = 752
ORDER BY
PrinterCounter.ReadTime ASC
ここでは完全なコードです
私はそれを明確にしています。すべてのプリンタには、1日の始めにカウンタがあり、1日の終わりに1つのカウンタがあります。生産は、終了からマイナスになります。
各クライアントには複数のプリンタがあり、指定された期間内に1台のプリンタごとにプロダクションを収集する必要があります。
この結合は、SQLがカウンタを持つプリンタのみを返すようにすることです。
これはうと思っている:
SELECT
DISTINCT
Printer.PrinterId
,Printer.PlaceId
,PrinterCounter.ReadTime
,(
SELECT TOP 1
EndPagesMono
FROM
[system_mfpm].[dbo].[PrinterCounter]
WHERE
PrinterCounter.ReadTime >= '01/07/2017 00:00:01' AND PrinterCounter.ReadTime <= '31/07/2017 23:59:59'
AND PrinterCounter.ClientId = 6
AND PrinterCounter.SubClientId = 752
AND PrinterCounter.PrinterId = Printer.PrinterId
ORDER BY PrinterCounter.ReadTime DESC
)-(
SELECT TOP 1
StartPagesMono
FROM
[system_mfpm].[dbo].[PrinterCounter]
WHERE
PrinterCounter.ReadTime >= '01/07/2017 00:00:01' AND PrinterCounter.ReadTime <= '31/07/2017 23:59:59'
AND PrinterCounter.ClientId = 6
AND PrinterCounter.SubClientId = 752
AND PrinterCounter.PrinterId = Printer.PrinterId
ORDER BY PrinterCounter.ReadTime ASC
) AS Mono
,(
SELECT TOP 1
EndPagesColor
FROM
[system_mfpm].[dbo].[PrinterCounter]
WHERE
PrinterCounter.ReadTime >= '01/07/2017 00:00:01' AND PrinterCounter.ReadTime <= '31/07/2017 23:59:59'
AND PrinterCounter.ClientId = 6
AND PrinterCounter.SubClientId = 752
AND PrinterCounter.PrinterId = Printer.PrinterId
ORDER BY PrinterCounter.ReadTime DESC
)-(
SELECT TOP 1
StartPagesColor
FROM
[system_mfpm].[dbo].[PrinterCounter]
WHERE
PrinterCounter.ReadTime >= '01/07/2017 00:00:01' AND PrinterCounter.ReadTime <= '31/07/2017 23:59:59'
AND PrinterCounter.ClientId = 6
AND PrinterCounter.SubClientId = 752
AND PrinterCounter.PrinterId = Printer.PrinterId
ORDER BY PrinterCounter.ReadTime ASC
) AS Color
FROM [client_lfn_MTUXNJCZMJQA].[dbo].[Printers] AS Printer
JOIN [system_mfpm].[dbo].[PrinterCounter] AS PrinterCounter ON PrinterCounter.PrinterId = Printer.PrinterId
WHERE Printer.WasRemoved = 0
が、私はそれは悪い習慣であるかなり確信していると私は「けれども、それは[OK]を
これらの2つのWHERE句は同じではありませんか? – sagi
私が見るのは唯一の相違は 'ORDER BY'の方向です – Siyual
2つのクエリを行い、' Union'を使用できますか? – Nope